{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# House Prices: Advanced Regression Techniques"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from sklearn.metrics import r2_score\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2 数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>MSSubClass</th>\n",
       "      <th>MSZoning</th>\n",
       "      <th>LotFrontage</th>\n",
       "      <th>LotArea</th>\n",
       "      <th>Street</th>\n",
       "      <th>Alley</th>\n",
       "      <th>LotShape</th>\n",
       "      <th>LandContour</th>\n",
       "      <th>Utilities</th>\n",
       "      <th>...</th>\n",
       "      <th>PoolArea</th>\n",
       "      <th>PoolQC</th>\n",
       "      <th>Fence</th>\n",
       "      <th>MiscFeature</th>\n",
       "      <th>MiscVal</th>\n",
       "      <th>MoSold</th>\n",
       "      <th>YrSold</th>\n",
       "      <th>SaleType</th>\n",
       "      <th>SaleCondition</th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1455</th>\n",
       "      <td>1456</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>62.0</td>\n",
       "      <td>7917</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>2007</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>175000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1456</th>\n",
       "      <td>1457</td>\n",
       "      <td>20</td>\n",
       "      <td>RL</td>\n",
       "      <td>85.0</td>\n",
       "      <td>13175</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>MnPrv</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>210000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1457</th>\n",
       "      <td>1458</td>\n",
       "      <td>70</td>\n",
       "      <td>RL</td>\n",
       "      <td>66.0</td>\n",
       "      <td>9042</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GdPrv</td>\n",
       "      <td>Shed</td>\n",
       "      <td>2500</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>266500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1458</th>\n",
       "      <td>1459</td>\n",
       "      <td>20</td>\n",
       "      <td>RL</td>\n",
       "      <td>68.0</td>\n",
       "      <td>9717</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>142125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1459</th>\n",
       "      <td>1460</td>\n",
       "      <td>20</td>\n",
       "      <td>RL</td>\n",
       "      <td>75.0</td>\n",
       "      <td>9937</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>2008</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>147500</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 81 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        Id  MSSubClass MSZoning  LotFrontage  LotArea Street Alley LotShape  \\\n",
       "1455  1456          60       RL         62.0     7917   Pave   NaN      Reg   \n",
       "1456  1457          20       RL         85.0    13175   Pave   NaN      Reg   \n",
       "1457  1458          70       RL         66.0     9042   Pave   NaN      Reg   \n",
       "1458  1459          20       RL         68.0     9717   Pave   NaN      Reg   \n",
       "1459  1460          20       RL         75.0     9937   Pave   NaN      Reg   \n",
       "\n",
       "     LandContour Utilities    ...     PoolArea PoolQC  Fence MiscFeature  \\\n",
       "1455         Lvl    AllPub    ...            0    NaN    NaN         NaN   \n",
       "1456         Lvl    AllPub    ...            0    NaN  MnPrv         NaN   \n",
       "1457         Lvl    AllPub    ...            0    NaN  GdPrv        Shed   \n",
       "1458         Lvl    AllPub    ...            0    NaN    NaN         NaN   \n",
       "1459         Lvl    AllPub    ...            0    NaN    NaN         NaN   \n",
       "\n",
       "     MiscVal MoSold YrSold  SaleType  SaleCondition  SalePrice  \n",
       "1455       0      8   2007        WD         Normal     175000  \n",
       "1456       0      2   2010        WD         Normal     210000  \n",
       "1457    2500      5   2010        WD         Normal     266500  \n",
       "1458       0      4   2010        WD         Normal     142125  \n",
       "1459       0      6   2008        WD         Normal     147500  \n",
       "\n",
       "[5 rows x 81 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = pd.read_csv(\"/Users/admin/Desktop/Ames_House/Ames_House_train.csv\")\n",
    "test_data = pd.read_csv(\"/Users/admin/Desktop/Ames_House/Ames_House_test.csv\") \n",
    "train_data.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# test_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# train_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# train_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# test_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1460, 81)\n",
      "(1459, 80)\n"
     ]
    }
   ],
   "source": [
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，训练数据有1460个，数据的特征列有81个。测试数据有1459个，数据的特征列有80个,测试数据少一列SalePrice，这是我们需要预测的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count      1460.000000\n",
       "mean     180921.195890\n",
       "std       79442.502883\n",
       "min       34900.000000\n",
       "25%      129975.000000\n",
       "50%      163000.000000\n",
       "75%      214000.000000\n",
       "max      755000.000000\n",
       "Name: SalePrice, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data['SalePrice'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出数据集中房屋的平均售价约为1.8万美元，大部分价值在1.3万美元到2.14万美元之间"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 SalePrice log变换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.8828757597682129\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x115a593c8>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(train_data.SalePrice.skew()) \n",
    "fig = plt.figure(figsize=(12, 6))\n",
    "sns.distplot(train_data['SalePrice'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出SalePrice的分布状态右侧有较长的尾部，skew值大于0.75，需要进行分布变换。一般使用log变换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.12133506220520406\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1107d3550>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF3CAYAAACmFo34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4nNWB9v/7TNGo92pV9wI2thG2wfReNpAOpBFIwpK6u9nd3ya7++Z9N9m872462U2yAUJIA5IQkhA6ATs0d4N7l2VJVu9do5k5vz8kG2NkS5ZHeqZ8P9elS5qZR6ObB1lz6+g85xhrrQAAAIB453I6AAAAABAJKMYAAACAKMYAAACAJIoxAAAAIIliDAAAAEiiGAMAAACSKMYAAACAJIoxAAAAIIliDAAAAEiiGAMAAACSJI9TXzg3N9dWVFQ49eUBAAAQJ7Zs2dJqrc0b7zjHinFFRYU2b97s1JcHAABAnDDGHJnIcUylAAAAAEQxBgAAACRRjAEAAABJEyjGxpgHjTHNxpidp3j8w8aY7aNvrxtjzgt/TAAAAGBqTWTE+CFJ15/m8cOSLrPWLpH0NUn3hSEXAAAAMK3GXZXCWvuyMabiNI+/fsLN9ZJKzj4WAAAAML3CPcf4E5KeCfNzAgAAAFMubOsYG2Ou0Egxvvg0x9wt6W5JKisrC9eXBgAAAM5aWEaMjTFLJD0g6RZrbdupjrPW3metrbTWVubljbv5CAAAADBtzroYG2PKJD0u6aPW2v1nHwkAAACYfuNOpTDGPCLpckm5xpg6Sf9bkleSrLX/I+krknIk/dAYI0kBa23lVAUGAAAApsJEVqW4fZzHPynpk2FLBAAAADiAne8AAAAAhXFVCgCAsx7eUDPpz/3QSlYKAgBGjAEAAABRjAEAAABJFGMAAABAEsUYAAAAkEQxBgAAACRRjAEAAABJFGMAAABAEusYA8ApsS4wAMQXRowBAAAAUYwBAAAASRRjAAAAQBLFGAAAAJBEMQYAAAAkUYwBAAAASRRjAAAAQBLFGAAAAJDEBh8AMCXYHAQAog8jxgAAAIAoxgAAAIAkijEAAAAgiWIMAAAASKIYAwAAAJIoxgAAAIAklmsDgLCx1qq2vV+vV7XpUEufZuYk69ziDM0vTJPP43Y6HgBgHBRjADhLgWBI2492ad2hNh3tHFCi16U5+Wk60tqnnfXd8riM5hWkaVlZphYVpcsY43RkAMAYKMYAcBY6+v368V8OqXswoLw0n24+b4aWlWXK53ErZK2OtPVrZ32Xdh3t0u6Gbi0tzdQtS2cwggwAEYhiDACTFAxZ/WZzrYYCId15UYXm5Ke+bTTYZYxm5qZoZm6KblpcpDX7mvXSnmbVdQzoQyvKVJiR6GB6AMDJuPgOACbpL/tbdKStXzefN0NzC9JOO0XCZYyuWlCguy6eqaHhoH649qA2VbfLWjuNiQEAp0MxBoBJqGnv10t7m3ReSYaWlWVN+PNm56Xqc1fOUXlOsn7/xlE9tqVOw8HQFCYFAEwUxRgAztDQcFC/2Vyr9CSvbllafMafn5bo1Z2rZ+rKBfl6o7ZTP3n1sHoGh6cgKQDgTFCMAeAM/Wl7vTr6/Lq1slSJ3sldROcyRlcvLNDtK8rU0DWgH609pIaugTAnBQCcCYoxAJyB7XWd2lrTqSsW5Ks8J+Wsn29xcYY+dckshazVj1+u0p6G7jCkBABMBsUYACZoOBjSE9vqVZqVpCvm54fteUuykvXpy+coL9WnX64/ou+/eEAB5h0DwLSjGAPABO042qV+f1DXnlMotyu8m3RkJHn1qUtmaUlJhr7zwn7ddt961bb3h/VrAABOj2IMABO0oapNeak+zco9+ykUY0nwuPTBylJ979al2tfYoxvufUWPbaljSTcAmCYUYwCYgKMdA6rtGNDKWdlTuqWzMUbvXlasZ/72Ei2aka5/+O02ffbhrWruHpyyrwkAGEExBoAJ2HC4TV630fIzWLP4bJRkJeuRT63SP12/QC/sbtKl31yj/3hmrzr7/dPy9QEgHlGMAWAcA/6gttV1amlp1qSXZ5sMt8vo05fP1gt/d5muP6dQP375kC75zzX6rxcPqHcoMG05ACBeUIwBYBxbazo0HLRaOTPbka9fkZui7922TM/+zaW6cHaOvv3Cfl36jTV64JUqDQ4HHckEALGIYgwApxGyVuur2lSWnawZmUmOZplfmKb7Plap33/mIi0qSte/P7VHV3xrrR7ZWMO20gAQBhRjADiNqpY+tfX5tWqWM6PFY1lWlqVffnKlHv7kShVmJOrLj+/QNd/5i3Yc7XI6GgBENYoxAJzG+qo2JSe4de6MDKejvMNFc3L1+Kcv0gMfq1Si161HNtbosS118gcYPQaAyRi3GBtjHjTGNBtjdp7icWOM+b4x5qAxZrsxZnn4YwLA9OsaGNaehm5dUJEtjzsyxxGMMbp6UYGe/PzFumJ+vt6o6dAP1x5UE8u7AcAZm8hP+ockXX+ax2+QNHf07W5JPzr7WADgvI2H2yVJKyoiZxrFqXjcLl2zqEB3rp6pPn9QP1x7UFuOtLM5CACcgXGLsbX2ZUntpznkFkk/tyPWS8o0xhSFKyAAOMFaq+11nZqTn6qslASn40zYnPxUff7KOSrNStbvth7Vk9sbKMcAMEHh+NtgsaTaE27Xjd4HAFHrUEuv2vr8WliU7nSUM5ae6NVdF8/U6tk5WlfVpvVVbU5HAoCoEI5iPNbeqGMOTxhj7jbGbDbGbG5paQnDlwaAqfHC7mZJispiLEkuY3TD4iItKEzTUzsadKil1+lIABDxwlGM6ySVnnC7RFL9WAdaa++z1lZaayvz8vLC8KUBYGr8eU+TijOTlJHkdTrKpLmM0QcrS5Wb6tMjG2vU3sd20gBwOuEoxk9I+tjo6hSrJHVZaxvC8LwA4IjW3iFtrenQgqI0p6OctUSvWx9dVa6Qtfrl+iMaCrBTHgCcykSWa3tE0jpJ840xdcaYTxhj7jHG3DN6yNOSqiQdlHS/pM9MWVoAmAYv7W2WtdLCwuicRnGynFSfbr+gTE3dg3psS51CXIwHAGPyjHeAtfb2cR63kj4btkQA4LA/727SjIxEFWUkOh0lbOYWpOmGcwv19M5GvX6oTRfPyXU6EgBEnMhcsR4AHDI4HNQrB1p19aICGTPWtcXRa/WcXM0rSNVLe5vU7w84HQcAIg7FGABO8PqhVg0MB3X1wgKno4SdMUbXn1ukoeGQ1u5jZSAAOBnFGABO8MLuZqX6PFo5K/J3u5uMwvRELS/P0rqqNnWwSgUAvA3FGABGhUJWL+5p0mXz8uTzuJ2OM2WuXlggI+mFPU1ORwGAiEIxBoBRO452qblnSFcvync6ypTKSPJq9ZxcvVnbqfrOAafjAEDEoBgDwKgXdjfJ7TK6Yn5sF2NJumxenpIT3Hp2V6PTUQAgYlCMAWDUn/c0qbI8S5nJCU5HmXKJXreumJ+vg829OtDU43QcAIgIFGMAkFTb3q+9jT26ZlHsrUZxKitnZisr2atndzUqFGLTDwAYd4MPAIhmD2+omdBxrx9qlST1+4MT/pxo53G7dO2iQv16c62e2dmom5YUOR0JABzFiDEASDrU3KvslATlpvqcjjKtFpdkKCvZq5+tq3Y6CgA4jmIMIO4FQ1ZVrX2anZfidJRp5zJGK2fmaOPhdu1t7HY6DgA4imIMIO41dA1oKBDSrLxUp6M4orI8Sz6PSz9fd8TpKADgKIoxgLh3qKVPkjQrN/5GjCUp2efRzefN0B/eOKruwWGn4wCAYyjGAOJeVUuv8tN8Skv0Oh3FMR+7sEL9/qB+t6XO6SgA4BiKMYC4FgiFVN3Wp9lxOo3imMUlGVpamqlfrD8ia1m6DUB8ohgDiGt17QMaDtq4vPDuZB+7sFxVLX167WCb01EAwBEUYwBx7VBrr4ykmbnxPWIsSTcuLlJOSoJ+vq7a6SgA4AiKMYC4VtXSp6LMRCUluJ2O4rhEr1u3XlCqP+9p0tHOAafjAMC0oxgDiFv+QEg17f2azWjxcR9eVS5J+tV6lm4DEH8oxgDiVk17v4IhG7frF4+lODNJVy0s0K831WooEHQ6DgBMK4oxgLh1qKVXLiNV5CQ7HSWifGRVudr6/Fqzt9npKAAwrSjGAOJWVUuvSrKS5fMyv/hEF8/JVX6aT7/betTpKAAwrTxOBwAAJwwOB3W0c0CXzctzOso7PLyhxtGv73YZvWdZsX7y6mG19Q4pJ9XnaB4AmC6MGAOIS9VtfQpZMb/4FN67vESBkNWfttU7HQUApg3FGEBcqmrpk8dlVJbN/OKxzC9M0zkz0vX4G0ynABA/KMYA4tKhll6VZSfL6+bH4Km8b3mJttd16UBTj9NRAGBa8IoAIO70DwXU0DXINIpx3Lx0htwuw6gxgLhBMQYQd6pa+yRJs/NSHE4S2XJTfbp8Xp5+v/WogiHrdBwAmHIUYwBx50jbyPzi4qwkp6NEvPcuL1Fj96DWHWpzOgoATDmKMYC4U93Wr9LsZHlc/Agcz1UL85We6NHjW+ucjgIAU45XBQBxZSgQVEPXgMrZ7W5CEr1u/dV5M/TMzkb1DQWcjgMAU4piDCCu1LT3K2SlihzmF0/U+5YXa2A4qGd3NjodBQCmFMUYQFw50tYvI7F+8RlYXpal8pxk/Y7pFABiHMUYQFypbu1TUUaiEr1up6NEDWOM3rusROuq2nS0c8DpOAAwZSjGAOJGIBRSbUe/ynOZRnGm3rOsWNZKf2BNYwAxzON0AACYLg2dgxoOWuYXj+HhDTXjHlORk6yHXqtWZpJXxpjj939oZdlURgOAacOIMYC4Ud02srFHBStSTMrysiy19A4xnQJAzKIYA4gb1a19yklJUFqi1+koUenc4gx5XEZbazqcjgIAU4JiDCAuhKzVkfZ+plGchUSvW4tmpGtbbZcCoZDTcQAg7CjGAOJCS8+Q+v1BNvY4S8tKszQwHNT+xh6nowBA2FGMAcSF4/OLWZHirMzJT1Waz6OtNZ1ORwGAsKMYA4gLR9r6lerzKCclwekoUc3tMjqvNFP7GnvUzxbRAGIMxRhAXKhu61N5TvLblhnD5Cwry1TQWm072uV0FAAIK4oxgJjX2e9XZ/8wF96FSVFGkooyEvUGq1MAiDETKsbGmOuNMfuMMQeNMV8a4/EyY8waY8wbxpjtxpgbwx8VACbnSFu/JOYXh9Oy0kzVdQyouWfQ6SgAEDbjFmNjjFvSDyTdIGmRpNuNMYtOOuxfJf3GWrtM0m2SfhjuoAAwWdVtfUrwuFSYnuh0lJhxXmmmXEZ6k4vwAMSQiYwYr5B00FpbZa31S3pU0i0nHWMlpY9+nCGpPnwRAeDsVLf1qTw7WW4X84vDJS3Rq7n5aXqjtlOhkHU6DgCExUSKcbGk2hNu143ed6L/I+kjxpg6SU9L+nxY0gHAWRrwB9XUPaRy5heH3bKyTHUNDGt9VZvTUQAgLCZSjMcaYjl5eOB2SQ9Za0sk3SjpF8aYdzy3MeZuY8xmY8zmlpaWM08LAGfoyLH1i9nYI+wWFqXL53Hpd1uPOh0FAMJiIsW4TlLpCbdL9M6pEp+Q9BtJstauk5QoKffkJ7LW3metrbTWVubl5U0uMQCcgeq2PrmNUWk2xTjcvG6XFhdn6JmdDer3s6YxgOg3kWK8SdJcY8xMY0yCRi6ue+KkY2okXSVJxpiFGinGDAkDcFx1W7+Ks5LkdbM65VRYVpalfn9Qz+1qdDoKAJy1cV8prLUBSZ+T9JykPRpZfWKXMearxpibRw/7e0mfMsZsk/SIpI9ba7kaA4CjBoeDOtoxoHKmUUyZipxklWYn6XGmUwCIAZ6JHGStfVojF9WdeN9XTvh4t6TV4Y0GAGfnzdpOBa1lY48pZIzRe5eV6PsvHVBD14CKMpKcjgQAk8bfFgHErM3V7ZKkcuYXT6n3Li+WtdIf3mClTgDRjWIMIGZtrO5QfppPyb4J/XEMk1Sek6LK8iw9vrVOzKIDEM0oxgBiUjBktfVIB9tAT5P3Li/RgeZe7Tza7XQUAJg0ijGAmLSnoVu9QwHWL54mNy0pUoLHpd9trXM6CgBMGsUYQEzaNDq/mAvvpkdGklfXLCrQE9vq5Q+EnI4DAJNCMQYQkzZVt6s4M0mZyQlOR4kb71terPY+v9bua3Y6CgBMCsUYQMyx1mpTdYcqK7KcjhJXLpmbp/w0n361ocbpKAAwKRRjADHnSFu/WnqGdEFFttNR4orX7dJHVpXrL/tbdKil1+k4AHDGKMYAYs7G0fnFK2ZSjKfbh1aWKcHt0s9er3Y6CgCcMYoxgJizubpdGUlezclLdTpK3MlN9eld583QY1vq1DUw7HQcADgjFGMAMWdTdYcuqMiSy2WcjhKX7lxdoX5/UL/dXOt0FAA4IxRjADGluWdQh1v7mF/soHOLM7SiIls/W1etYIid8ABED4oxgJiypbpDklRJMXbUx1dXqLZ9QC/uaXI6CgBMGMUYQEzZWN2uRK9Li4sznI4S165dVKDizCT99LVqp6MAwIRRjAHElE3V7VpamqkEDz/enORxu/TRC8u1rqpNexu7nY4DABPCKweAmNE7FNDu+m7mF0eI2y4oVaLXpYcYNQYQJSjGAGLG1iMdCllRjCNEZnKC3rOsRL9/46ja+/xOxwGAcVGMAcSMTdXtchlpeTlbQUeKu1ZXaCgQ0kOvHXY6CgCMi2IMIGZsqm7XohnpSvV5nI6CUXML0nTj4kL99LVqdfYzagwgsvHqASAm+AMhvVHTqQ+tLHM6Ck7yhavm6ukdjXrw1cP64rXz3/bYwxtqJvWc/H8GMBUYMQYQE3Yc7dJQIKQVzC+OOAsK0xk1BhAVKMYAYsLm6nZJbOwRqb5w1Vz1DAX04KvMNQYQuSjGAGLCpup2zcxNUV6az+koGMOCwnTdcC6jxgAiG8UYQNQLhaw2VXfoggpWo4hkjBoDiHQUYwBR72BLr7oGhplGEeEWFr01atzVP+x0HAB4B4oxgKi38fDI/GIuvIt8x0aNf8K6xgAiEMUYQNTbVN2uvDSfynOSnY6CcSwsStf15xTqp68eVge74QGIMKxjDCAqnG6927/sa1FJVpIe2Vg7jYkwWX93zTw9v7tR9754QPMK0pyOAwDHMWIMIKp19vvVOTCsitwUp6NgguYXpunWC0r1y/VH1No75HQcADiOYgwgqlW39UmSKnIoxtHk766ZJ5/HpWd3NjodBQCOoxgDiGrVbf3yeVwqzEh0OgrOQH5aou65bLZ2N3TrcGuf03EAQBLFGECUq27tU1l2slzGOB0FZ+iTl8xSeqJHT+9oUMhap+MAAMUYQPTqHwqouWeI+cVRKinBrWvPKdTRzgFtr+t0Og4AUIwBRK8j7f2SxDJtUWxpaaZmZCTquV1NGg6GnI4DIM5RjAFEreq2PrmNUWkWxThauYzRDYuL1DUwrNcPtjodB0CcYx1jAFGrurVPxVlJ8rr5Hd9Jp1tjeiJm56VqQWGa1uxv0fLyLKUlesOUDADODK8mAKLS0HBQRzsHNIv5xTHhxsVFCgatnt/V5HQUAHGMYgwgKh1p71fISjPzKMaxIDfVp4vm5GhLTYfqOvqdjgMgTlGMAUSlqpY+uYxUnk0xjhVXzM9Xqs+jP22rl2X5NgAOoBgDiEqHW3tVkpWsBA8/xmJFotet684pUG3HgN6sZfk2ANOPVxQAUWcoMDK/eCbzi2POsrIsFWcm6bldjRoKBJ2OAyDOUIwBRJ0jbSPzi7nwLva4jNG7lhSpezCgv+xvcToOgDhDMQYQdQ63jswvLmNjj5hUlpOipaWZevVAq9r7/E7HARBHKMYAos7h1j6VZCXL53E7HQVT5LpzCuUyRs/sbHA6CoA4MqFibIy53hizzxhz0BjzpVMc80FjzG5jzC5jzMPhjQkAI4YCQdV19DO/OMZlJHl1+fw87arv1qGWXqfjAIgT4xZjY4xb0g8k3SBpkaTbjTGLTjpmrqQvS1ptrT1H0t9OQVYAUA3zi+PG6jm5ykr26snt9QqGWL4NwNSbyIjxCkkHrbVV1lq/pEcl3XLSMZ+S9ANrbYckWWubwxsTAEZUMb84bnjdLt24uEhN3UPaWN3udBwAcWAixbhYUu0Jt+tG7zvRPEnzjDGvGWPWG2OuD1dAADjR4dY+FWcmMb84TiwqStesvBT9eXeT+ocCTscBEOMmUozNGPed/Dctj6S5ki6XdLukB4wxme94ImPuNsZsNsZsbmlhGR4AZ8YfCKmuo1+z8lKdjoJpYozRXy2ZocHhoP68t8npOABi3ESKcZ2k0hNul0iqH+OYP1prh621hyXt00hRfhtr7X3W2kprbWVeXt5kMwOIU0fa+xSy4sK7OFOYnqiVs7K1oapdjV2DTscBEMMmUow3SZprjJlpjEmQdJukJ0465g+SrpAkY0yuRqZWVIUzKAAcbhmZX1zO/OK4c/XCAiV63XpyR72s5UI8AFNj3GJsrQ1I+pyk5yTtkfQba+0uY8xXjTE3jx72nKQ2Y8xuSWsk/aO1tm2qQgOIT8wvjl/JCR5dvahAVS192t3Q7XQcADFqQusYW2ufttbOs9bOttZ+ffS+r1hrnxj92Fprv2itXWStXWytfXQqQwOIPyPziwc0M5f5xfFqRUW28tN8enZno4aDIafjAIhB7HwHICrUtPcraK1m5TG/OF65XUbXn1uotj6/Ht5Q43QcADGIYgwgKlS19I7ML85mfnE8m1+Qpll5Kfren/ere3DY6TgAYgzFGEBUONjSq9KsZPm8zC+OZ8YY3XBukTr6h/WjtYecjgMgxlCMAUS8rv5hHe0Y0Ox85hdDKs5M0nuWFevBVw/raOeA03EAxBCKMYCIt66qTVbSbDb2wKi/v3aerKRvP7fP6SgAYgjFGEDEe+1gqxLcLpVmJzkdBRGiJCtZd62eqd+/eVQ7j3Y5HQdAjKAYA4h4rx1q1czcFHlc/MjCWz5zxWxlJnn1/57Zw6YfAMKCVxkAEa2+c0BVLX3ML8Y7pCd69YWr5uq1g236y/4Wp+MAiAEUYwAR7bWDrZKkOcwvxhg+vLJcpdlJ+uZz+xQKMWoM4OxQjAFEtNcOtio3NUEF6T6noyACJXhc+uI187SrvltP7WhwOg6AKEcxBhCxrLV69WCbVs/JlTHG6TiIUDefV6wFhWn6zgv72SoawFmhGAOIWPubetXaO6TVc3KdjoII5nYZ/cO183W4tU+/3VzndBwAUYxiDCBivTo6v5hijPFctTBfy8syde+L+zU4HHQ6DoAoRTEGELFeOziyTFtxJusX4/SMMfqn6xeoqXtIP19X7XQcAFGKYgwgIg0HQ9pQ1abVc3KcjoIosXJWji6bl6cfrj2k7sFhp+MAiEIUYwARaVttp/r8QV3MNAqcgX+8br46+4d1/8tVTkcBEIUoxgAi0qsHW2WMdOEsijEm7tziDP3VkiL95NXDau0dcjoOgChDMQYQkV472KolxRnKSPY6HQVR5ovXzNPgcFA/WnvI6SgAogzFGEDE6R0K6I2aTlajwKTMykvV+5aX6Bfrj6ixa9DpOACiCMUYQMRZf6hNgZClGGPSvnDVXFlr9d9rDjgdBUAUoRgDiDhr9jUrJcGtyoosp6MgSpVmJ+vWC0r16021qm3vdzoOgChBMQYQUay1WruvRavn5MrncTsdB1Hsc1fMlTFG33+RUWMAE0MxBhBRDjT36mjngK5YkO90FES5woxEfXRVuX63tU5VLb1OxwEQBSjGACLKmr3NkqTL5+c5nASx4NOXz5bP49b3/syoMYDxUYwBRJSX9jZrYVG6ijLYBhpnLzfVpztXV+hP2+u1t7Hb6TgAIhzFGEDE6B4c1uYjHbqC0WKE0d2XzlJqgkfffWG/01EARDiKMYCI8eqBVgVDlvnFCKvM5AR98pJZem5Xk3bUdTkdB0AEoxgDiBhr9jYrI8mrZaWZTkdBjLnr4gplJnv17Rf2OR0FQASjGAOICKGQ1dr9Lbp0Xp48bn40IbzSEr2657LZWruvRZur252OAyBCeZwOAACStKu+Wy09Q8wvxoQ8vKHmjD8n0eNWqs+jbz+/X4/cvWoKUgGIdgzLAIgIa/Y1yxjp0nkUY0yNBI9Ll8/P07qqNr1+sNXpOAAiEMUYQERYs69ZS0oylZvqczoKYtgFFdkqykjUt57fJ2ut03EARBiKMQDHtff59WZtJ9MoMOW8bpc+f+Vcba3p1Np9LU7HARBhKMYAHPfy/hZZK13JMm2YBh+oLFFZdjKjxgDegWIMwHEv7W1WbmqCzp2R4XQUxAGv26W/uWqudtV367ldjU7HARBBKMYAHBUIhvTygRZdNi9fLpdxOg7ixLuXFWt2Xoq+88J+BUOMGgMYwXJtABy18XC7OvuHdfVCplFgehxb6u2Cimw9uqlWX358h5ZOcFOZD60sm8poABzGiDEARz29s0FJXrcun08xxvQ6tzhDhemJenFPE6PGACRRjAE4KBiyenZnk65ckK+kBLfTcRBnXMbomkUFauvz642aDqfjAIgAFGMAjtlU3a7W3iHdsLjQ6SiIUwsK01SSlaSX9jYrEAw5HQeAwyjGABzzzI4GJXpduoJpFHCIMUbXLCxQ58CwNh9h1BiIdxRjAI4Ihaye2dmoy+flK8XHdcBwzpz8VFXkJGvNvmYNM2oMxDWKMQBHbKnpUHMP0yjgPGOMrllUqJ7BgDZUtTkdB4CDJlSMjTHXG2P2GWMOGmO+dJrj3m+MscaYyvBFBBCLnt7RoASPS1ctLHA6CqCZuSmak5+qtftbNBQIOh0HgEPGLcbGGLekH0i6QdIiSbcbYxaNcVyapC9I2hDukABiSyhk9cyORl02L0+pTKNAhLhmYYH6/UG9drDV6SgAHDKREeMVkg5aa6ustX5Jj0q6ZYzjvibpG5IGw5gPQAx6o7ZTjd2DumlxkdNRgONKs5O1qChdLx9oVe9QwOk4ABwwkWJcLKn2hNt1o/cdZ4xZJqnUWvtkGLMBiFFP72hQgtulK9ntDhHmunMKFQiG9NLeZqejAHDARIqxGeO+41sEGWNckr4r6e/HfSJj7jbGbDbGbG5paZmEmXlvAAAgAElEQVR4SgAxw1qrZ3Y06JK5uUpP9DodB3ibvDSfKsuztfFwm9p6h5yOA2CaTaQY10kqPeF2iaT6E26nSTpX0lpjTLWkVZKeGOsCPGvtfdbaSmttZV5e3uRTA4ha2+q6VN81qBuZRoEIdeXCfLldRs/vbnI6CoBpNpFivEnSXGPMTGNMgqTbJD1x7EFrbZe1NtdaW2GtrZC0XtLN1trNU5IYQFR7ekeDvG6jqxexGgUiU3qiVxfPydOOo12q6+h3Og6AaTRuMbbWBiR9TtJzkvZI+o21dpcx5qvGmJunOiCA2BEMWT21vUEXz8lVRhLTKBC5Lp2bq5QEt57Z2Shr7fifACAmTGidJGvt05KePum+r5zi2MvPPhaAWPTKgRYd7RzQP9+40OkowGn5vG5duSBff9reoP1NPZpfmO50JADTgJ3vAEybRzbWKCclQdcwjQJR4IKZ2cpOSdCzuxoVYtQYiAsUYwDTorlnUC/uadb7zi9RgocfPYh8HpdL151TqKbuIW2u7nA6DoBpwKsTgGnx2JY6BUJWt11QOv7BQIQ4d0a6ynOS9fzuRg342SoaiHUUYwBTLhSyenRjrVbOzNasvFSn4wATZozRu5bM0IA/qBf3snwbEOsoxgCm3LqqNtW09+v2FWVORwHO2IzMJFVWZGt9VZsONPU4HQfAFKIYA5hyj2ysUUaSV9efW+h0FGBSrllUoASPS//2p90s3wbEMIoxgCnV1juk53c16b3Li5XodTsdB5iUVJ9HVy8s0KsHW9kRD4hhFGMAU+rxrUflD4aYRoGot3Jmjubmp+rfn9qtwWEuxANi0YQ2+ACAybDW6pFNNVpelql5BWl6eEON05GASXO7jP73u87RR36yQT959bA+e8UcpyMBCDNGjAFMmU3VHapq6WO0GDHj4rm5uu6cAv33SwdV19HvdBwAYUYxBjBlfr6uWmk+j25aUuR0FCBsvvKuc2SM9K9/2MmFeECMoRgDmBL7m3r01I4GfeTCciUnMGsLsaM4M0n/eN18rd3Xoie21TsdB0AYUYwBTInvv3hAyV63PnXJLKejAGH3sQsrtLQ0U1/902519PmdjgMgTCjGAMLu2GjxHRdVKDslwek4QNi5XUb/8b7F6hoY1r8/tcfpOADChGIMIOzuffGAUhI8jBYjpi0oTNc9l83W77bW6dUDrU7HARAGFGMAYbWvsUdP72jQxy+qUBajxYhxn7tyjmblpuiff79DA37WNgaiHcUYQFjd++J+pSR49MlLZjodBZhyiV63/u97F6umvV/f/fN+p+MAOEsUYwBhs7exW0/vaNSdqyuUmcxoMeLDqlk5un1FmR54pUqbqtudjgPgLFCMAYTNvX8+oDSfR5+4mNFixJd/uWmhSrKS9Xe/flM9g8NOxwEwSRRjAGGxu75bz+xktBjxKdXn0XdvPU/1nQP62pO7nY4DYJIoxgDOWjBk9c+/36HMZK8+cTErUSA+nV+erc9cPke/2Vyn53Y1Oh0HwCSwHRWAs/aTV6v0Zm2n7r1tqTKSvU7HARzzhavmau3+Zn358R1aXpalvDTf8cce3lAz6ef90MqycMQDMA5GjAGclYPNvfrW8/t17aIC3XzeDKfjAI5K8Lj03Q8uVd9QQF/63XZZa52OBOAMUIwBTFowZPX/PbZNSV63/v0958oY43QkwHFzC9L0pRsW6MW9zXp44+RHiQFMP4oxgEl78NXD2lrTqX+7+RzlpyU6HQeIGHdcWKFL5+Xpq3/arb2N3U7HATBBFGMAk3KopVffen6frllUoFuWMoUCOJHLZfTtD5yn9CSvPvurrer3B5yOBGACKMYAztjIFIrtSvS69fV3M4UCGEtemk/33rZUVa19+l9/2OV0HAATwKoUQBw626vjv/7UHm050qHv3nqe8tOZQgGcykWzc/WFK+fq3hcPyEhaXp7ldCQAp8GIMYAz8tPXDuvB1w7rztUVes+yEqfjABHvC1fN1apZ2frjtqNq7hl0Og6A06AYA5iw3fXd+uqTu3XtogL9602LnI4DRAW3y+je25bJ63bp0Y21Gg6GnI4E4BQoxgAmpK6jX7/eXKMlxRm697ZlcruYVwxMVEF6oj5YWarG7kE9sa3e6TgAToE5xgDG1d7n18/WHVGqz6MbFxfp928cdToSEHXmFaTpivl5WrOvReXZyaqsyHY6EoCTMGIM4LR6Bof1s9erFQyFdMeFFUpLZMtnYLKuWligOXmpemJbveo7B5yOA+AkFGMAp9QzOKwHXj2szgG/PrqqghUogLPkMkYfvKBUKT6PfrXhiAb8QacjATgBxRjAmLoHh/XAK4fV2e/XHRdWaGZuitORgJiQ6vPo9hVl6h4I6LdbahWy1ulIAEZRjAG8w7FS3DUwrI9fNFOz8lKdjgTElLLsZN24pEh7G3v08v4Wp+MAGEUxBvA23QPDeuCVKnUPDOuOixgpBqbKqpnZWlqaqRd2N+lAU4/TcQCIYgzgBN0Dw3rg1Sp1Dwb0cUoxMKWMMXr30mIVpCfq0U21au/zOx0JiHsUYwCSpK6BYd3/ykgpvvOiClVQioEpl+Bx6cMryyRJv1x/RP4Am38ATqIYA1DX6PSJ3qGRUlyeQykGpktOqk+3XlCqpu5BPf5GnSwX4wGOoRgDca6z36/7KcWAo+YVpOnaRQXaXtelVw+2Oh0HiFsUYyCOdfb79cCrh9U3FNCdq2eqjFIMOObSeXk6d0a6nt3ZqIPNvU7HAeISxRiIUwP+oH76WrX6hgK6a/VMlWUnOx0JiGvGGL3v/BLlpfn0yMYatfUOOR0JiDsepwMAmH6BYEi/WH9E7f1+3bV6pkopxcCEPLyhZkqf3+dx66OryvWjvxzSz9cd0T2XzVZSgntKvyaAt0xoxNgYc70xZp8x5qAx5ktjPP5FY8xuY8x2Y8yLxpjy8EcFEA6hkNVjW+tU3dan9y8vYUk2IMLkpPr04ZXlau/z65FNNQqGuBgPmC7jFmNjjFvSDyTdIGmRpNuNMYtOOuwNSZXW2iWSHpP0jXAHBRAe33x+n7bXdem6cwp1Xmmm03EAjGFmborevWyGDjb36snt9axUAUyTiYwYr5B00FpbZa31S3pU0i0nHmCtXWOt7R+9uV5SSXhjAgiHX64/oh+tPaQVM7N16dxcp+MAOI3zy7N1ydxcbTjcrp+9Xu10HCAuTKQYF0uqPeF23eh9p/IJSc+cTSgA4ffy/hZ95Y87deWCfL1ryQwZY5yOBGAc151TqIWFafrqk7u1dl+z03GAmDeRYjzWq+eYf9MxxnxEUqWkb57i8buNMZuNMZtbWlomnhLAWWnoGtDf/vpNzStI03/dvkxuF6UYiAYuY/TBC0o1vzBdn/nVVm2r7XQ6EhDTJrIqRZ2k0hNul0iqP/kgY8zVkv5F0mXW2jHXmLHW3ifpPkmqrKxkwhRwFiZ6dXwwZI/vanfHhRX645vv+OcLIIL5PG49dOcFet+PXtfHf7pRv73nIs3JT3U6FhCTJjJivEnSXGPMTGNMgqTbJD1x4gHGmGWSfizpZmstf+sBIsjzuxt1pL1f71lWrLw0n9NxAExCQXqifvmJlXK7jD72kw1q6BpwOhIQk8YtxtbagKTPSXpO0h5Jv7HW7jLGfNUYc/PoYd+UlCrpt8aYN40xT5zi6QBMoz0N3XrlQKtWzszWeSWsQAFEs4rcFD105wr1DAb00Z9sVEef3+lIQMyZ0DrG1tqnrbXzrLWzrbVfH73vK9baJ0Y/vtpaW2CtXTr6dvPpnxHAVOvo8+uxLXWakZmoGxcXOR0HQBicW5yh+++oVE17v+58aJP6hgJORwJiCltCAzEoEArpkU01Clmr2y8ok9fNP3UgVqyalaP/un2Zttd16i7KMRBWvFoCMeilvc2q6xjQ+5aXKCeVecVArLnunEJ999al2nykQx97cKO6B4edjgTEBIoxEGNq2vv1l30tOr8sS+cWZzgdB8AUuWVpsf57dOT4Iw9sUGc/c46Bs0UxBmKIPxDSbzfXKiPZq5uWMK8YiHU3LC7S/3zkfO1t6NHt929QW++Yq6UCmCCKMRBDnt3VqLY+v96/vESJXrfTcQBMg6sWFuiBOyp1uLVXt963Xo1dg05HAqIWxRiIEQeae7S+qk2rZ+doVh6L/wPx5NJ5eXrozhVq6BzQu3/wmnbVdzkdCYhKFGMgBgz4g/rdljrlpfp07TmFTscB4IBVs3L023sukjHSB/5nnV7a2+R0JCDqTGRLaAAR7k/b69U7FNBHVpWzNBsQxxbNSNcfPrtan/jZJn3yZ5t14+IiXTQ7d1LP9aGVZWFOB0Q+XkGBKLfzaJferO3U5fPzVZKV7HQcAA4rSE/Ub/76Ql21sEBPbm/Qn7bVKxiyTscCogLFGIhiPYPD+sObR1WcmaQr5uc7HQdAhEhO8Oh/PnK+Lp6Tq3VVbXrwtcPqYa1jYFwUYyBKWWv1+zeOyh8I6QPnl8jtMk5HAhBB3C6jGxcX6f3nl6i2vV8/WHNQNe39TscCIhrFGIhSW450aG9jj649p1D56YlOxwEQoZaXZemey2bL43bp/pertL6qTdYytQIYC8UYiEK17f16akeDZuam6KLZOU7HARDhZmQm6bOXz9Gc/FQ9sa1ej22pkz8QcjoWEHEoxkCUCYWs/uG32yRJ719eIpdhCgWA8SUluPXRC8t11cJ8vVnbqR+sPajGbjYDAU5EMQaizIOvHdaGw+36qyVFykpJcDoOgCjiMkZXLSjQXRfP1IA/qB+uOajN1e1MrQBGUYyBKLKjrkvfeHafrl5YoOVlWU7HARClZuel6vNXzlF5TrIef+OofrulTkPDQadjAY6jGANRomdwWJ97ZKtyUhP0zfcvkWEKBYCzkJbo1Z2rZ+rqhfnaNjq1oqFrwOlYgKPY+Q6IAtZaffnxHarrGNCjd69iCgUQZx7eUDMlz+syRlcuKFBFbop+valWP1p7SDctKdKKiuwp+XpApGPEGIgCj2ys1ZPbG/TFa+bpAl6wAITZrNxUff7KuZqZm6I/vlmvRzfVsiEI4hLFGIhwexq69W9/2qVL5ubq05fNdjoOgBiV6vPojosqdO2iAu082qV3/der2nm0y+lYwLSiGAMRrG8ooM89vFXpSV5954NL5WJ3OwBTyGWMLp+fr09eMkuDwyG994ev6+frqlm1AnGDYgxEqFDI6h8f26aq1j7de+tS5aX5nI4EIE7MzE3R039ziS6ak6Ov/HGXPvvwVnUztQJxgGIMRCBrrb721G49vaNRX75hgS6ak+t0JABxJjslQQ/ecYG+dMMCPberSTd9/xVtr+t0OhYwpSjGQAR64JXD+ulr1bpzdYU+dcksp+MAiFMul9E9l83Wb/56lYJBq/f96HU98EqVQiGmViA2UYyBCPPEtnp9/ek9unFxof7XTYtYrxiA484vz9ZTX7hEl8/P178/tUd3PrRJLT1DTscCwo5iDESQ1w+16h9+s00rKrK52A5ARMlKSdB9Hz1fX7vlHK2vatMN976il/e3OB0LCCuKMRAhttV26q9/vkXlOcm6/2OVSvS6nY4EAG9jjNFHL6zQE5+7WNkpXn3swY36+lO7NRRgO2nEBna+AyLAszsb9be/fkO5qT49dNcKZSR7nY4EIM6Nt9veh1eW6+kdDbr/lcP645v1+kBlqYozkyRJH1pZNh0RgbBjxBhwkLVWP/7LIX36V1u0oDBdv//M6uMvLAAQybxul25ZWqw7LqzQwHBQP1p7UC/ubVKQC/MQxRgxBhwyHAzpK3/cqUc21uqmxUX69gfPY/oEgKgzvzBNf3PVXD25vUEv7mnW3oYerZyVrXkFaU5HA84YI8aAA+o7B/Txn27UIxtr9dkrZuu/bl9GKQYQtZITPPpgZak+tKJMHf1+3fT9V/St5/ZpcJi5x4gujBgD02hwOKgHXqnSD9YcUshafeP9S/TBylKnYwFAWJxbnKGK3BTtbejWf685qD9uO6qv3nyurliQ73Q0YEIYMQamyYt7mnTd917Wt57fr0vn5erPX7yMUgwg5qT6PPrOrUv1yKdWKcHt0p0PbdI9v9ii+s4Bp6MB42LEGJhCQ4GgXtrTrF9tqNGrB1s1Oy9Fv/jECl0yN8/paAAwpS6cnaNn/uZS3f9Klb7/4gG9tK9ZH7+oQp++bLayUhKcjgeMiWIMhJm1Vrvqu/XYljr94c2j6uwfVkG6T/9y40LdcVGFEjz8oQZAfEjwuPTZK+bolqUz9N0XDuj+V6r0yIYa3X3pLN118Uyl+KghiCzGWmeWVamsrLSbN2925GsDYxlvzc5TCVmr5WVZ2lLToa1HOrT5SLtq2weU4HHp2kUFev/5Jbpkbp7cp9jFbrJfFwCiTWP3oF7Y3aQ9Dd1K8Xl08ZxcXVCRpeSEtwoyayBjKhhjtlhrK8c7jl/VgAkYDobU2T+sjn7/yFvfWx+39AxpKBCSJOWl+VRZnqW/vnS23rVkBht1AMAJCtMT9dFV5app69MLe5r03K5GvbS3ScvLsnTh7BzlpyU6HRFxjmIMaKT4tvf51d7nP6H8+tUxWoZ7BgNvO95tjDKTvcpKSdDS0kzdvqJM55dnqSQrScaMPTIMABhRlpOiT1w8Sw1dA3r9YJs2H+nQhsPtmleQqrREj65amP+2UWRgujCVAnGls9+vPQ09OtjSq8MtfTrc2qvDrX2q7Rh4225NLiNlJHmVmZyg7OQEZaZ4R94nJyg7JUFpiR65KMAAEBY9g8PaWN2ujYfb1TMYUJLXrSsX5utdS2bo8vl5rPOOszbRqRQUY8Sspu5BvVHToW11Xdrb0K29jT1q6Bo8/niS162K3BTNyk1RRW6yGjoHlZWSoKzkBGUkeU85JxgAMDVC1mp2Xqqe3F6vZ3Y2qr3PrySvW5UVWVo1K0erZmVrcXEmFzHjjFGMEVf8gZB21XfpgVcOq6a9X7Xt/eocGJY0Mu0hL82nwoxEFaYnqjAjUQXpiUpP9DDtAQAizLGL7wLBkNZVtemF3U3aUNWufU09kkYGNZaUZGhBYZrmFaZpfsHI+/RErunAqXHxHWJaU/egth7p0NaaDm2t6dSOo13yj14Al5nkVWl2slZnJ6ssO1lFGYnyuBldAIBo4nG7dMncvOPrvrf1Dmnj4Xatr2rTtrou/XZLnfr9b205nZuaoBmZSZqRkTTyPjNReWk+5aX6lJvmU26qT5lJXrn4ayBOg2IcRSa7rFe0L30TCIa0t7FHW450HH87OrqDUoLHpSXFGbrjwnItL8vSkbZ+pScxagAAsSYn1acbFhfphsVFkqRQyOpo54D2N/VoX1OP1uxtVmf/sLbUdOilvc3yB0PveA6XkVJ8HqWe/Jb41scpo7dTEjwTmlIX7a+xeDuKcRQLWauh4ZAGA0EFglbBkFUgFFIwZBWykttILpfRzqNd8riNkrzu4z8AfJ7IvZChpWdIO452Hi/B22q7NDA8MipQmJ6o88uzdNfFM7W8LFPnzMh421wz1gQGgPjgchmVZierNDtZVy0sUGbSW7vpWWs1MBxUz2BAvUMB9Q2NvO8dvX3sraVnSL1DAQVC75xWaiQlJbz1upme6FXa6Pv0JK/SEz1KS/RqKBCM6NdUnJkJFWNjzPWS7pXklvSAtfY/TnrcJ+nnks6X1CbpVmttdXijxodAMKS2Pr+augfV1D2kpu5BNY9+/EZth3oHA+ofDmpwOKjB4Xf+NjyWH6499I773C4jn8ellITR34597pHfkI/9xpww8v72lWXKSU1Qmi+883GDIavmnkHVdQzocGuf9jX2aG9jt/Y19qi11y9p5Df7oowkLS3LVPnotIjM5Ld+8O1p6NGehp6wZQIAxAZjjJITPEpO8KhgnGOttRoKhMYszifed6StTz2D7yzR33p+n7KSvSpIT1R+eqJyUkZWLzr2lpXsVarPqxSfW2mjr7PJCR75PC79bkvdpF5bGaWeOuMWY2OMW9IPJF0jqU7SJmPME9ba3Scc9glJHdbaOcaY2yT9p6RbpyJwNLLWqncooPY+v1p7/aPvh46X3+buQTX1jHzc1jukk39xdZmRPyF53UZpiSP/+BIT3Eryjrz5PC553C65XUae0TdjjELWjryFrIJ2ZK3eoeGghgIhDY6ONPcPBdQ7FFRT95AOtfQdH5k95r5XqiRJCW6XclITlJOacHye1rESnZzgUYrPLe/oPN5jF3RaSX1DAXUPBtQ9MKzuwWF19A2rvmtA9Z0DGg6+9R+a6HVpXkGarlyQrwWF6WroGlRxZhJXHgMAppQxRoletxK9buWm+k57rLVWA/7gyOva4LC6B4Y1MzdFjcdez3sGVdXSq/Y+/9vmP5/O8ddut0tel5HHbeRxuU56//bH9zf1yOdxjbx53Upwu+Tzjt72uJWU4Faab2RE+9g0kbTEkTLOReenN+6qFMaYCyX9H2vtdaO3vyxJ1tr/d8Ixz40es84Y45HUKCnPnubJnV6VwtqR6QYha0enHoy+D0nBk+479rE/EFK/P6h+f1ADw4G3Pj7+PqA+f1AdfX619vnV3jektl6/2vr8xy8MO1lOSoLy0xNVkO5TQdrI+5Hbo/eN/vbpcbumZZpAMGSP/8mpbyigJaUZausdKfStvSPFvW10E4z+oaB6hwLHd307lUSv6/ifnjKSvJqRmaSSrGNvySrNSlJ5Tsrb5nIxJQIAEA1ONXo7OBw8vlNqn39k5LlndAS63x+QPxjS5uoOBYIj0yCPvR8+YWrkcNAqEAwpELJvO84YyR8MTfgvx8ccG2A7Np86LfHYm/f4lJG0RM9bpdrnUbJvpHh7R98SPOb4x163a+Qxj5HLGBkjuYwZfVNElfBwrkpRLKn2hNt1klae6hhrbcAY0yUpR1LrxOJOj/rOAV32zTXH5+CGmzFSstetzOQE5aYmKC/VpwWF6cpJGRlpzU7xjYy6piQoJ3XkStlIGxF1u8zI3KnRC9jes6xk3M8JBEPq8wfftkHGsX8KyT43c68AAHEn0etWUUaSijKSTnnM2V5Ub63VcNBqKDDy1+CRvwiPDNj1DgVG51gPq2cwcHy+dc/g8EhJHy3q9Z2D6hnqOX7fWPOtz8ZbZVkyMlr7j5drRuapz4nTJlKMx6r7J5+1iRwjY8zdku4evdlrjNk3ga+P8eVqin4J+fBUPGnkm7LzGac4n+HF+Qwvzmf4xdU5nYbXyXecz2h+bS7+v4596fKJHDSRYlwnqfSE2yWS6k9xTN3oVIoMSe0nP5G19j5J900kGCbOGLN5In8ewMRwPsOL8xlenM/w4nyGH+c0vDif02sif8ffJGmuMWamMSZB0m2SnjjpmCck3TH68fslvXS6+cUAAABApBl3xHh0zvDnJD2nkeXaHrTW7jLGfFXSZmvtE5J+IukXxpiDGhkpvm0qQwMAAADhNqF1jK21T0t6+qT7vnLCx4OSPhDeaDgDTE8JL85neHE+w4vzGV6cz/DjnIYX53MajbtcGwAAABAPImutMAAAAMAhFOMIZox50BjTbIzZecJ92caYF4wxB0bfZ53ic4PGmDdH306+WDIuneJ8fsAYs8sYEzLGnPKqX2PM9caYfcaYg8aYL01P4sh2luez2hizY/T707mdfiLIKc7nN40xe40x240xvzfGZJ7ic/n+PMlZnk++P8dwinP6tdHz+aYx5nljzIxTfO4do69bB4wxd4x1TLw5y/PJa/wUYSpFBDPGXCqpV9LPrbXnjt73DUnt1tr/GH0BzLLW/tMYn9trrU2d3sSR7RTnc6GkkKQfS/oHa+07XgRHt0XfrxO2RZd0+0nbosedyZ7P0eOqJVVaa+NmrdPxnOJ8XquRVX4Cxpj/lKST/73z/Tm2yZ7P0eOqxffnO5zinKZba7tHP/6CpEXW2ntO+rxsSZslVWpkj4Mtks631nZMZ/5IM9nzOfoYr/FThBHjCGatfVnvXA/6Fkk/G/34Z5LePa2hothY59Nau8daO95GMyskHbTWVllr/ZIe1cj/h7h2FucTYzjF+XzeWhsYvbleI+vIn4zvzzGcxfnEKZzinHafcDNFY2zuJek6SS9Ya9tHy/ALkq6fsqBR4izOJ6YQxTj6FFhrGyRp9H3+KY5LNMZsNsasN8ZQns/OWNuiFzuUJVZYSc8bY7aM7oiJ8d0l6Zkx7uf7c3JOdT4lvj/PiDHm68aYWo1syPaVMQ7he/QMTOB8SrzGTxmKcewqG90p50OSvmeMme10oCg2oS3PcUZWW2uXS7pB0mdH/6SIUzDG/IukgPT/t3cnIXZUURzGvz8OcWhR4wAxZCMJIganOKBBxU0jkgTFYeOcgLpw6wARFUFcOCBOJCDiJkpACRoQogjBhS4E54DROIBiMGYhGsU4cFzUbWker5PuTr8k3f39oHj1qm/dunW4dJ1X3KrLun5/7rPN/rkHe4kn2D8npKpWV9UCunje1aeIfXQCxhFP8Bo/MCbG089PSeYBtM8d/QpV1Y/t8xtgM3DO/mrgDDSeadE1AaP65w5gA91wAPXRHlRaBtwwxoyi9s8JGEc87Z+T9zJwTZ/t9tHJGSueXuMHyMR4+hk9/fYtwOu9BZIcn2ROWz8RWArM6gdx9tF4pkXXOCU5OskxI+vAMPD5nveanZJcAdwLrKiqP8YoZv8cp/HE0/45MUkWjfq6AviiT7FNwHC7Nh1PF9NN+6N908144uk1fsCqyuUgXYBXgO3A33S/uFcBJwDvAF+1z7mt7HnAC239YuAz4JP2uepAn8vBsIwRz6vb+m7gJ2BTK3sK8Oaofa+ke/L/a2D1gT6Xg2GZbDyBU1vf/ATYYjz3GM9tdGMzP27Lmt54tu/2zymKp/1zwjF9je6Hw6fARmB+K/v/Nal9X9nivw247UCfy8GwTDaeXuMHu/i6NkmSJAmHUkiSJEmAibEkSZIEmBhLkiRJgImxJNtnldsAAAKBSURBVEmSBJgYS5IkSYCJsSQNTJLVSbYk+TTJx0ku3EPZl5Jcu5f6XkrybavrwyQXjVHuziQ372v7JWm2OfRAN0CSZqKWtC4Dzq2q3e1F/IdPQdV3V9WrSYaBtcCZPcc9tKrWTMFxJGnWMTGWpMGYB+ysqt0AVbUTIMkDwHLgSOA94I7qeaF8kiXAk8AQsBO4taq299T/LrCwld/c6loKvNFmbttVVY8nWQisAU4C/gWuq6qvk9wNXA/MATZU1YNTfP6SNO04lEKSBuMtYEGSL5M8n+Sytv3Zqjq/qhbTJcfLRu+U5DDgGeDaqloCvAg80qf+5XSzXo04rqouq6onesqtA56rqrPoZsza3u42LwIuAM4GliS5dJ/OVpJmAO8YS9IAVNWuduf3EuByYH2S+4DfktwDHAXMpZt2eOOoXU8DFgNvJwE4hG7a2BGPJbkf+JluCtkR63vb0O4cz6+qDa1Nf7btw8Aw8FErOkSXKL+7L+csSdOdibEkDUhV/QtsBjYn+Qy4g25M8HlV9X2Sh4AjenYLsKWq+j5YRxtj3Gf77322ZYw6AjxaVWv3cgqSNKs4lEKSBiDJaUkWjdp0NrC1re9MMgT0ewvFVuCkkTdOJDksyRmTaUNV/Qr8kOSqVtecJEcBm4CVrQ0kmZ/k5MkcQ5JmEu8YS9JgDAHPJDkO+AfYBtwO/EI3Nvg74IPenarqr/batqeTHEv3f/opuiEXk3ETsDbJw8DfdA/fvZXkdOD9NlxjF3AjsGOSx5CkGSE9D0NLkiRJs5JDKSRJkiRMjCVJkiTAxFiSJEkCTIwlSZIkwMRYkiRJAkyMJUmSJMDEWJIkSQJMjCVJkiQA/gNPFxo+2BAEjgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "target = np.log(train_data.SalePrice) \n",
    "print(target.skew()) \n",
    "fig = plt.figure(figsize=(12, 6))\n",
    "sns.distplot(target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "log变换后，符合正态分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3SalePrice && corr相关系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2EAAALyCAYAAABTidxmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XecXVW5//HPd9I7EDAGAkS61EBiUESkCXiVEpEmSlFv5F6w8LvCRVGIwXaxXRQsETGAAhGUehEkQKRLJhCSgHSiJNQklIQkkynP74+zRg7DmXJmHc607/v1Oq/Ze+21n732aTPPrLXXVkRgZmZmZmZm1VHT1Q0wMzMzMzPrS5yEmZmZmZmZVZGTMDMzMzMzsypyEmZmZmZmZlZFTsLMzMzMzMyqyEmYmZmZmZlZFTkJMzMzMzOzXk3SRZJekrSole2S9FNJT0paIGm3om3HS3oiPY6vRHuchJmZmZmZWW83Ezioje0fBbZOj6nALwAkbQCcDewOTAbOlrR+bmOchJmZmZmZWa8WEXcAK9qocihwSRTcB6wnaSxwIHBLRKyIiFeAW2g7meuQ/rkBrOPqlz0duTF+OPGs7HbUkd0M6pUfo1KGR/7/EirxnDQpOwRracqOUYnnozvJf0ZgEPkvTlMF3iOvK/9s1ot+2TGgMudTV4H3/KBu8lUyNPJPZnWFvhcHVaAtr9fkt2VABU5nQAU+e5WwsgKfPYDBFXhtKvEN/VoFzmdUBX5XjKrAL74VFXivAgyuwHutMn8fZYcAYPri33ePD08HVeJv3FwDN9ryCxR6sJrNiIgZZYTYBHi2aH1JKmutPIuTMDMzMzMz69FSwlVO0tVSqcQ32ijP0rv+ZW5mZmZmZla+JcCmRevjgOfaKM/iJMzMzMzMzPq664Dj0iyJ7wdei4jngZuBAyStnybkOCCVZfFwRDMzMzMz67ymxq5uQbskXQ7sDWwoaQmFGQ8HAETEL4EbgX8DngRWAyembSsknQPMTaGmR0RbE3x0iJMwMzMzMzPr1SLimHa2B3ByK9suAi6qZHuchJVJ0qqIGF6ifCZwQ0RcVf1WmZmZmZl1kajMDKR9ia8JMzMzMzMzqyL3hHWSJAE/A/YFnqH09JVmZmZmZmZv4Z6wzpsCbAvsBPw7sEepSpKmSqqVVHvhJZdXs31mZmZmZu+8pqauf/Qw7gnrvL2AyyOiEXhO0m2lKhXfOK473E3czMzMzMy6lpOwPE6qzMzMzKxPC0/MUTYPR+y8O4CjJfWTNBbYp6sbZGZmZmZm3Z97wjrvagqTciwEHgf+2rXNMTMzMzOznsBJWJma7xGWbuh2Shc3x8zMzMysa/XAiTG6mocjmpmZmZmZVZF7wszMzMzMrPM8MUfZnIRV0Q8nnpUd46vzpmfHeM82h2TH2HvENtkxdo2h2TEAltY0ZMfYuCn/o9CvAnNl1qtfdoylyn8+KtVF/nKsy46xtHFldozGCvxymDFsUHaMm9dukB1jcIV+zy3Lf6sxoALv+W3y3yKMaGrMjnHXkPx3/VHKf68CzG4clR1jLflvlM0b898kj/fPf21eJf87bWwMzI4BlZkSub4CMVSBGGuUfzY1NZVoSWWsrsCr01SB01lRgfer9Q0ejmhmZmZmZlZF7gkzMzMzM7POq8CIhL7GPWFmZmZmZmZV5J4wMzMzMzPrPE/MUTb3hJmZmZmZmVVRVZIwSSHp0qL1/pJelnRDWh8j6QZJD0l6RNKNqbxG0k8lLZK0UNJcSe9p51gzJX2ylW2TJd0h6TFJj0q6UNJQSSdIOr+S52xmZmZmZlZKtYYjvgHsKGlIRKwBPgIsLdo+HbglIs4DkLRzKj8K2BjYOSKaJI1LscomaQxwJXB0RNwrScDhwIhOnZGZmZmZmUGThyOWq5rDEf8MfCwtHwNcXrRtLLCkeSUiFhSVPx9RGGgaEUsi4hUASaua60v6pKSZRfH2l3SnpMclfTyVnQxcHBH3plgREVdFxIvFjZR0sKS/SXpQ0uyUvCHpw5Lmp8eDkkZIGpt61uan3roPZT1DZmZmZmbW61UzCbsCOFrSYGBn4G9F2y4AfiPpdklnSto4lf8BODglOT+StGsHjzUe+DCFpO+X6Zg7AvM6sO9dwPsjYtfU5tNT+VeBkyNiAvAhYA3wKeDmVLYLML9lMElTJdVKqr1/1RMdbL6ZmZmZWc8Q0dTlj56maklY6t0aT6EX7MYW224GtgB+DWwHPChpo4hYAmwLfA1oAm6VtF8HDveHiGiKiCeAp1PMjhoH3CxpIXAasEMqvxv4saQvAetFRAMwFzhR0jRgp4hYWeK8Z0TEpIiYNHn41mU0w8zMzMzMeqNqz454HfBD3joUEYCIWBERl0XEZygkN3ul8rqI+HNEnAZ8FziseZei3Qe3DFdi/WFgYgfa+DPg/IjYCfhCc+yI+D7weWAIcJ+k7SLijtTOpcClko7rQHwzMzMzM+vDqp2EXQRMj4iFxYWS9pU0NC2PALYE/ilpt+ahiZJqKAxj/Efa7UVJ703lU1oc54g0s+KWFHrYHgPOB46XtHvRcT8t6d0t9h3Fm5OGHF9Ud8uIWBgR/wPUAttJ2hx4KSJ+DfwG2K0zT4qZmZmZWY/V1NT1jx6mqjdrTsMLzyuxaSJwvqQGConhhRExV9JBwK8lDUr17qeQTAGcAdwAPAssAoYXxXsM+CswBjgpItYCayUdDfxQ0rsoDG+8A/hTi7ZMA66UtBS4D2ieEv8rkvYBGoFHKEw0cjRwmqR6YBXgnjAzMzMzM2tTVZKwiBheomwOMCct/wD4QYk6NwE3tRLzKuCqEuUntNGOeylMqtHSzPQgIq4Fri2x7xdL7HdxepiZmZmZmXVIVXvCzMzMzMysl+mBsxN2tWpfE2ZmZmZmZtanuSesiureNmlj+d6zzSHZMZ55/LrsGK8de2J+OxblPx8Al9cMar9SOzZpyG/LWik7xriG+uwYe9Y0ZMeY139IdgyAPRr6ZcfYc8tXsmMMHpP/+l71tw2yYzRV4N9eh221pP1KHXDzE+OyYyzun/+8btCU/359ZOCA7BifaHzbHUbKdnXNyOwYAMdv+EJ2jBXLhmXH+JtGZMf4tFZlxxg+cm12jNuWj8mOATC6If+//X8flP9F8O7G/O/WNfm/sti1ri47xt2DB+Y3BBhABU6oAn+WnDZ6eX6Qnqipsatb0OO4J8zMzMzMzKyKnISZmZmZmZlVkYcjmpmZmZlZ53lijrK5J8zMzMzMzKyK3BNmZmZmZmad1+SesHJVpSdM6vj0SJIOk7R90fpMSc9Imp8eX6pQm/aWtEclYpmZmZmZmXVUd+wJOwy4AXikqOy0iLiqtR0k9YuIcufG3BtYBdxTdgvNzMzMzMw6qcuuCZO0uaRbJS1IPzdLPVOHAD9IvV5btrH/KknTJf0N+ICk/SQ9KGmhpIskDUr1Fkv6lqQH0rbtJI0HTgJOTcf5kKSDJf0txZgtaUzafyNJt6T9fyXpH5I2TNs+Len+FONXkvJv3GFmZmZm1pNEU9c/epiunJjjfOCSiNgZ+D3w04i4B7iOQs/XhIh4KtVtTsrmS9oplQ0DFkXE7kAtMBM4KiJ2otDD9x9Fx1oWEbsBvwC+GhGLgV8CP0nHuRO4C3h/ROwKXAGcnvY9G7gt7X81sBmApPcCRwEfjIgJQCNwbMuTlDRVUq2k2nmrnsx7xszMzMzMrMfryuGIHwA+kZYvBc5to26p4YiNwB/T8rbAMxHxeFq/GDgZ+N+0/qf0c17RMVsaB8ySNBYYCDyTyvcEpgBExE2SXknl+wETgbmSAIYAL7UMGhEzgBkA0zY/tgL3YjczMzMz60Y8MUfZutM1YeUmKGuLrgNTO3Xr0s9GWj/nnwE/jojrJO0NTGsntoCLI+JrHWuumZmZmZlZ1w5HvAc4Oi0fS2E4IMBKYESZsR4FxkvaKq1/BvhrO/u0PM4oYGlaPr6o/C7gSABJBwDrp/JbgU9KelfatoGkzctst5mZmZmZ9THVSsKGSlpS9Ph/wJeAEyUtoJA0fTnVvQI4LU2Q0erEHMUiYi1wInClpIVAE4VrvtpyPTCleWIOCj1fV0q6E1hWVO9bwAGSHgA+CjwPrIyIR4BvAH9J53ALMLYj7TUzMzMz6y0iGrv80dNUZThiRLSW7O1bou7dwPZFRSe0EnN4i/VbgV1L1BtftFxLYWp60vVjO7eofm2JQ70GHBgRDZI+AOwTEXUpxixgVqn2mZmZmZmZldKdrgnrrjYD/iCpBlgH/HsXt8fMzMzMrPvogVPEdzUnYe2IiCco0cNmZmZmZmbWGU7Cqqxe+bPU7z1im+wYrx17YnaMUb//bV6AXf6LvzMsux3QwHqRf5/sfwxob5LNto1pgBczP1HjGuD5/gOyYmzV1EBDqyOAO279Cg2vfnRg3v57As//Y2RWjPeMeY0XFgzNawiwNu8tAsDqCnwHLH1qVH5DgFGNmf+57C/Wb8p/UpbV5P8qeiP3Ld8EjzUOb79eW2qgoQLvEYDHl47O2n/DQWtR7nstYEm//P9uP72m3Lm23mrnkWt57IW854MBMLa+IS8GsE41LO+f//26JvO1WR/xemYzBkRlJgZ4YsCgzAjB0Mj/4KwVNJQ90fZb9UfUZcYAWP5y3t82ozd6I7sN1v05CasiJ2BvVZkEjG6RgEF+Agb5CRjQqxIwyE/AACdgJWQnYNB7EjAqkIDRfRIwID8Bo3skYEB+AkZlEjCgWyRgQHYCBt0lAaMiCRjkJ2BAt0jAmmP0uOm2fZ+wsnXlFPVmZmZmZmZ9jpMwMzMzMzOzKvJwRDMzMzMz6zzPjlg294SZmZmZmZlVUY/uCZO0quVNm9uoexjweEQ8UlTWH3gB+HVEfO0daqaZmZmZWe/VVKEZvfqQvtQTdhiwfYuyA4DHgCMllZyeR1L+1HtmZmZmZmZJr0vCJG0u6VZJC9LPzSTtARwC/EDSfElbpurHAOcB/wTeXxRjsaSzJN0FHCFpS0k3SZon6U5J26V6B0v6m6QHJc2WNKbKp2tmZmZmZj1Mjx6O2IrzgUsi4mJJnwV+GhGHSboOuCEirgKQNATYD/gCsB6FhOzeojhrI2LPVPdW4KSIeELS7sDPgX2Bu4D3R0RI+jxwOvBf1TlNMzMzM7NuwBNzlK3X9YQBHwAuS8uXAnu2Uu/jwO0RsRr4IzClxdDDWQCShgN7AFdKmg/8Chib6owDbpa0EDgN2KHlQSRNlVQrqfbBlU/mnZmZmZmZmfV4vbEnrKXWbn9+DPBBSYvT+mhgH2B2Wn8j/awBXo2ICSVi/Az4cURcJ2lvYNrbDh4xA5gBcOb4T+Xfit3MzMzMrDtpck9YuXpjT9g9wNFp+VgKQwYBVgIjACSNpNBDtllEjI+I8cDJFBKzt4iI14FnJB2R9pWkXdLmUcDStHx85U/FzMzMzMx6m56ehA2VtKTo8f+ALwEnSloAfAb4cqp7BXCapAeBI4DbIqKuKNa1wCGSBpU4zrHA5yQ9BDwMHJrKp1EYpngnsKzSJ2dmZmZmZr1Pjx6OGBGtJZH7lqh7N2+dov43LbavADZKq+NbbHsGOKhEzGspJG9mZmZmZn2TJ+YoW0/vCTMzMzMzM+tRenRPmJmZmZmZdTFPzFE294SZmZmZmZlVkXvCephdY2h2jGcW5c+U//ddzsqOccxD07NjAHx50hnZMc49qiG/IfX5MVY/9Fp2jKf/Pjo7xgMDK/B8AFMHvp4dY5MD8tvRuHxNdoz97n8lO8bvG0dlx9j2xCHZMQAeuTD/f3BL+jVmxzjxiDfar9SOJ/+YHYIFGpkdY2FT/ucX4EsT8j83DWuUHeO/d8v/XVGz3vDsGPFGXfuV2rHo9/nPB8AWQ/Nfm3vX5f8e3y4GZ8cYUIGb5tRX4GldVlOZHpRNGyvxnZbflvfO2C87hvUNTsLMzMzMzKzzPByxbB6OaGZmZmZmVkXuCTMzMzMzs06LyB+e3te4J8zMzMzMzKyKqpqESRon6VpJT0h6StJ5kga+w8dclX6Ol7SoqHxPSfdLelTSY5JOrsRxzMzMzMzM2lK1JEySgD8B10TE1sA2wHDgO5lxyx5SKendwGXASRGxHfBB4LOSpuS0xczMzMysz2lq6vpHD1PNnrB9gbUR8VuAKAwePZVC8jNX0g7NFSXNkTRR0jBJF6XtD0o6NG0/QdKVkq4H/iJpuKRbJT0gaWFzvTacDMyMiAdSW5YBpwOnpfgzJX2yqD3NvWnlHsfMzMzMzOwtqjkxxw7AvOKCiHhd0j+BG4AjgbMljQU2joh5kr4L3BYRn5W0HnC/pNlp9w8AO0fEitQbNiXF2xC4T9J1EdHaXTB2AC5uUVYLbN/OOawt8zhmZmZmZr1b9LyeqK5WzZ4wAaWSFQFzgCPS+pHAlWn5AOAMSfNTncHAZmnbLRGxoijGdyUtAGYDmwBjOtGWjpxDOcdB0lRJtZJqH1z5ZCcOaWZmZmZmvUk1k7CHgUnFBZJGApsCc4HlknYGjgKuaK4CHB4RE9Jjs4j4e9r2RlGoY4GNgIkRMQF4kULC1uG2ABMp9IYBNJCem3QtW/PkIeUeh4iYERGTImLSriO2aquqmZmZmZn1AdVMwm4Fhko6DkBSP+BHFK7NWk0h8TodGBURC9M+NwNfTIkQknZtJfYo4KWIqJe0D7B5O225ADhB0oQUdzSFCULOSdsXU0jKAA4FBnTyOGZmZmZmvVtXT8rhiTlal66bmgIcIekJ4HEK11h9PVW5Cjga+EPRbudQSIAWpOnlz6G03wOTJNVS6K16tJ22PA98Gpgh6THgOeCnEfHXVOXXwIcl3Q/szpu9bmUdx8zMzMzMrKVqTsxBRDwLHNzKthdbtici1gBfKFF3JjCzaH0ZhYk6SsUdnn4uBnYsKr8DmAyQ7hH2dUk3RcQrqS3vLwrztY4ex8zMzMzMrC1VTcK6q4i4gMIQRTMzMzMzK4dnRyxbNa8JMzMzMzMz6/PcE2ZmZmZmZp3XAyfG6GryfYar53ubfzr7yX5ZDZVoSrb1ol92jBdUX4GWwHm138+OsdW2h2XH+PqQnbNj3NN/TXaMMf+6o0LnjW3Kf30BHtDq7BhryH/PD67A/5smxNDsGJXwz5rKfG4GVmAgxK7r8t8nV/R/NTvG1jX5l+S+K/LfI//UuuwYAIMr8NoMrUCMa9Y8nR1jy0EbZscYqvzXZnuGZccAWKv8v5k2bcx/bVYpOwSDK/Dn3ys1+UE2aqrAyQAvV6AtIyO/LU9V6Dv6p4tnVeaJqZI1f/l5lycUQw74zx71nHk4opmZmZmZWRV5OKKZmZmZmXWeJ+Yom3vCzMzMzMzMqsg9YWZmZmZm1nmemKNs7gkzMzMzMzOronc8CZM0TtK1kp6Q9JSk8yTlT9/W9jFXpZ/jJS0qKp8s6Q5Jj0l6VNKFkrKnPJM0TdJXc+OYmZmZmVnv944mYZIE/Am4JiK2BrYBhgPfyYxb9jBKSWOAK4H/johtgfcCNwEjctpiZmZmZtanNTV1/aOHead7wvYF1kbEbwEiohE4FfispLmSdmiuKGmOpImShkm6KG1/UNKhafsJkq6UdD3wF0nDJd0q6QFJC5vrteFk4OKIuDe1JSLiqoh4UdIGkq6RtEDSfZJ2TsecltoyR9LTkr5U1N4zU4/abGDbCj5nZmZmZmbWi73TSdgOwLzigoh4HfgncANwJICkscDGETEPOBO4LSLeB+wD/EBS810WPwAcHxH7AmuBKRGxW6r3o9Tz1podW7alyLeAByNiZ+DrwCVF27YDDgQmA2dLGiBpInA0sCvwCeB9rR1U0lRJtZJq71/1RBvNMzMzMzPrgaKp6x89zDudhAkodQdtAXOAI9L6kRSGCgIcAJwhaX6qMxjYLG27JSJWFMX4rqQFwGxgE2BMJ9u5J3ApQETcBoyWNCpt+7+IqIuIZcBL6RgfAq6OiNUpqbyutcARMSMiJkXEpMnDt+5k88zMzMzMrLd4p5Owh4FJxQWSRgKbAnOB5Wno31HAFc1VgMMjYkJ6bBYRf0/b3igKdSywETAxIiYAL1JI2Npqy8RWtpXqQWtOHuuKyhp5c1r/UsmlmZmZmZlZm97pJOxWYKik4wAk9QN+BMyMiNUUEq/TgVERsTDtczPwxeahhZJ2bSX2KOCliKiXtA+weTttOR84XtLuzQWSPi3p3cAdFJI6JO0NLEs9XK25A5giaYikEcDB7RzbzMzMzKx36upJOTwxx1tFRABTgCMkPQE8TuFarq+nKldRuLbqD0W7nQMMABak6eXPaSX874FJkmopJFCPttOWF9Oxfpgm1Pg7hWGFrwPTUqwFwPeB49uJ9QAwC5gP/BG4s636ZmZmZmZmzcqe6r1cEfEsrfQUpcSof4uyNcAXStSdCcwsWl9GYaKOUnGHp5+LKUzI0Vx+L4XEq6XVwNtmV4yIaS3Wi2N9h8yp9s3MzMzMerweODFGV3vHb9ZsZmZmZmZmb3ISZmZmZmZmVkXv+HBEe1NdBSZU3Lgp/yXbpCG/Hf8Y0NYt2Trm3KMasmMAbLXtYdkxnnzsmuwY63769fYrtWPvP6zOjvH6yvwhAVcOaGui0Y47fG1+nN23ej47xrKlw7Nj3FCBkRb3x2vZMU5ZMzS/IUBjBb6Pbh+S/6Rc8r5V2TEev3tgdozL8kPwQqzNDwIc0jAyO8Z6jfmvzZmzpmbHaLjqquwYjcvzPzcP316ZP3dWR7/sGCfWL8iOcerwCdkx/tmvMTvGqMj/X/4/+lVmGNvICrTlFeV/L37noPz3a4/UAyfG6GruCTMzMzMzM6si94SZmZmZmVnneWKOsrknzMzMzMzMejVJB6XbVD0p6YwS238iaX56PC7p1aJtjUXbrqtEe9wTZmZmZmZmvZakfsAFwEeAJcBcSddFxCPNdSLi1KL6XwR2LQqxJiLyL8Ys4iTMzMzMzMw6r/tPzDEZeDIingaQdAWFewQ/0kr9Y4Cz38kGdevhiCq4S9JHi8qOlHRTBWL/TtIzqVvxUUnf6MA+UySdlpa/Lekrafmzkt6d2yYzMzMzM6u4TYBni9aXpLK3kbQ58B7gtqLiwZJqJd0nKX9abrp5T1hEhKSTgCsl3Q70A74DHJQTV1LzeZ8aEddIGgI8KuniiHi2tf0i4upWNn0WeAB4IaddZmZmZmZWPklTgeJ7a8yIiBnNm0vs0to9CY4GroqI4vs4bBYRz0naArhN0sKIeCqnvd06CQOIiEWSrgf+GxgGXBIRT0k6HjgZGAjcA5wSEU2SZgC7AUOAWRExHUDSEuBXFBK4/21xmCEUXojVRXV3jIhXJb0f+HZE7C/p86n8K807SjoKmADMkrQGmBwR696ZZ8PMzMzMrJvpBsMRU8I1o5XNS4BNi9bHAc+1UvdoCjlGcezn0s+nJc2hcL1YVhLWrYcjFvkW8Cngo8C5knYEpgB7pIvk+lN4wgDOiIhJwC7ARyRtXxTnjYj4YERcmdZ/Imk+he7JSyJiebkNi4hZwHzgqIiY0DIBkzQ1dV/Wzlv1ZLnhzczMzMwsz1xga0nvkTSQQt7wtlkOJW0LrA/cW1S2vqRBaXlD4IO0fi1Zh3X7njCAiHhD0ixgVUTUSdofeB9QKwkKPVnNwwiPkfQ5Cue2MbA9bz5Rs1qEbh6OOAK4XdINEXF/hdv+r6x82ubH5t+K3czMzMysO4nu/SduRDRIOgW4mcLlTRdFxMOSpgO1EdGckB0DXBHxlhN6L/ArSU0UOrC+XzyrYmf1iCQsaUoPKIzrvCgivllcQdLWwJcpDAl8VdLvgMFFVd4oFTgiVkr6K7AncD/QwJu9hINL7WNmZmZmZj1DRNwI3Nii7KwW69NK7HcPsFOl29NThiO2NBs4MnUJImm0pM2AkcBK4HVJY4EDOxJM0gAKU1c2j+1cDExMy4d3IMRKYESHW29mZmZmZn1WT+oJ+5eIWCjpW8BsSTVAPXASUEth6OEi4Gng7nZC/UTSNGAQhe7J5q7IacCvJb1AoWesPb8FLvTEHGZmZmbW53SDiTl6mh6ThLXsHoyIy4DLSlT9TCv7j2ux/uk2jjUH2LpE+YVFy98oWv4D8IfW4pmZmZmZmTXrMUmYmZmZmZl1Q+4JK1tPvSbMzMzMzMysR3JPWBU1lbpXd5n6VWAG0LWqQEMqob6hImG+PmTn7Bjrfvr17BgDv/Td7BjP/Cq/Ha/V9MuOUU9j+5U6YHAFpqxd/tyw7Bhv1A3IjrF1Bc7l5UH55/KuoSUneS3borqR2TEGVeD7qGl1fpDXGgdmxxhM/vfiYPI/ewCbNNRnx3ipX/57PmrvyY6x9rH892vd6xX4TovK/N4bqvzvxl2Hj8+OUYk/3vpV4D1fCUMq9NpU4tM3ogJtifrK/P603s9JmJmZmZmZdV54OGK5PBzRzMzMzMysitwTZmZmZmZmneeJOcrmnjAzMzMzM7MqchJmZmZmZmZWRW0mYSq4S9JHi8qOlHRT7oEl/U7SM5LmS3pI0j65Mcs8/rclfaVofaCkFZLOaWOf/SVd08q2JZLWeyfaamZmZmbWbUV0/aOHaTMJi4gATgJ+LGmwpGHAd4CTcw4qqflatFMjYgLwVeDnOTEr4CDgEeCoLm6HmZmZmZn1Yu0OR4yIRcD1wH8DZwOXRMRTko6XdH/qyfq5pBoASTMk1Up6WNJZzXFST9E3Jd0NTGlxmHuBTYrqvk/SXyXNk/RnSWNS+V2SfizpTkmPSJok6WpJT0iaVrT/6ZIWpccXi8rPkvSYpFuArVu04Rjgx8CLkt5XtM/H0j53AYcWlW8k6RZJD0j6BXSTG26YmZmZmVVTU1PXP3qYjl4T9i3gU8BHgXMl7Ughkdoj9WT1B45Odc+IiEnALsBHJG1fFOeNiPhgRFzZIv5BwDUAkgYB5wGHR8RE4HdA8RDBNRHxIeA3aZ+TgJ2AqZLWkzQZOBaYDHwA+E9JO6fyw4EJwCfTdtIxhwEfBm4ELqeQkCFpKPAr4N+ADwEbt3hObo+I3YCbWmz7F0lTU1Ja+8DKJ0tVMTMzMzOzPqRDU9RHxBuSZgGrIqJO0v7A+4BaSQBDgGdT9WMkfS7F3hjYnsIwP4BZLUL/RNJdYvpJAAAgAElEQVRPgA15Myl6L7ADMDvF7gcsKdrnuvRzIbAwIl4EkLQYGEchWfpjRKxO5dcAewJDU/kaYI2k64tiHgLcEhFrJV2Zzuurqe2PR8RTKdbvgePSPntRSM6IiGslrWzluZsBzAA4a/yxPW/AqpmZmZmZVVQ59wlrSg8oDL27KCK+WVxB0tbAl4HJEfGqpN8Bg4uqvNEi5qkUhjqeCswEdk+xF6TerlLqitpTV1TelM6nrWGBrSVBxwC7p0QO4F0UkqxVbezTVjwzMzMzs76hBw4H7GqdnaJ+NnCkpA0BJI2WtBkwElgJvC5pLHBge4EiohH4ETBU0n4Ues02ScMHm2ct3KGMtt0BTJE0RNJwCtdx3ZnKP5EmGBkJfDzFX59C8jcuIsZHxHjgSxQSs0eAbSS9R4VuuWNaHOfYFONgYEQZbTQzMzMzsz6qnJ6wf4mIhZK+RWHIYA1QT+HarFoKicsi4Gng7g7GC0nfBk6PiFslfRL4qaQRqY0/Ah7uYKz7JV0OzE1Fv4iIhQCSrgYeAhZTSKKgcJ3YLRFRXxTmGgqzQJ6SzuvPwLJ0PtumOmcDl0s6ErgdWNqR9pmZmZmZ9SrhnrBydTgJi4hpLdYvAy4rUfUzrew/rsX6p1uszyJdMxYRD1C4jqtljD2LlmdT6JErte1c4NwS+08Hppdo3oUt6r1MYUgiwP+lR8tYLwP7FxX9V4m4ZmZmZmZmb9HZ4YhmZmZmZmbWCZ0ajmhmZmZmZgYQTZ6rrlxOwqpoLfnjZevVLzvGuIb69iu1ox8DsmOsfui17BgA9/TPb8vef1idHeOZX309O8Z+D383O8ai3U7NjnEPQ7JjACzvl/8Vs8PoNdkxhq2ra79SO1a8MDA7RmN2BNhwk1UViAKrF4/KjjG8Ar9zlz48MjtG/wp8t+5Qn//61gyozOdmzJCSdzwpy3r1+Z+9R/43/702Zmx+O1ST/0Zbqcr8ubNa+QOIxlRgDFJdBT57mzbmN+S1CpzLalXoWqJK5ABtza/dQU2rG/KDWJ/g4YhmZmZmZmZV5J4wMzMzMzPrPN8nrGzuCTMzMzMzM6si94SZmZmZmVnn+T5hZXNPmJmZmZmZWRVVJQmTFJIuLVrvL+llSTd0ItYcSQe2KPuKpJ93IlZ/Scskfa/cfc3MzMzMzDqjWj1hbwA7Smqev/cjwNJOxrocOLpF2dGpvEOkf83zfgDwGHCkpJITkxbVNTMzMzOzlpqi6x89TDWHI/4Z+FhaPoaipEnSZEn3SHow/dw2le8g6X5J8yUtkLQ1cBXwcUmDUp3xwMbAXZL2Tj1lV0l6VNLvm5MrSYslnSXpLuCIonacB/wTeH9Re95SV9KWkm6SNE/SnZK2S/UOlvS31O7Zksa8Q8+dmZmZmZn1EtVMwq4AjpY0GNgZ+FvRtkeBvSJiV+AsoPmOtScB50XEBGASsCQilgP3AwelOkcDsyKiOQXeFfgKsD2wBfDBouOsjYg9I+KK1Cu3H3ADhYTwmBbt/VddYAbwxYiYCHwVaB76eBfw/tTuK4DTW560pKmSaiXVPrTyyY49U2ZmZmZmPUVTU9c/epiqzY4YEQtSr9UxwI0tNo8CLk49XQEMSOX3AmdKGgf8KSKeSOXNQxKvTT8/WxTr/ohYAiBpPjCeQrIEMKuo3seB2yNitaQ/At+UdGpENBbXlTQc2AO4smjE4qD0cxwwS9JYYCDwTInznkEhieP08cf0vL5SMzMzMzOrqGrPjngd8EPefv3WORQSoh2Bg4HBABFxGXAIsAa4WdK+qf41wH6SdgOGRMQDRbHqipYbeWui+UbR8jHA/pIWA/OA0cA+JerWAK9GxISix3vTtp8B50fETsAXmtttZmZmZmbWmmrfJ+wi4LWIWChp76LyUbw5UccJzYWStgCejoifpuWdgdsiYpWkOSlehyfkKIo7EtgT2DQi6lLZiRQSs9nFdSPidUnPSDoiIq5M15jtHBEPtWj38eW2w8zMzMysx+uBwwG7WlV7wiJiSUScV2LTucD3JN0NFM9GeBSwKA0r3A64pGjb5cAuFK7FKtcnKCRzxb1m1wKHNE/40cKxwOckPQQ8DByayqdRGKZ4J7CsE+0wMzMzM7M+pio9YRExvETZHGBOWr4X2KZo8zdT+feAkvfwioirAbUo+1fMtH5K0fL4ouWZwMwW+64ANkqr41tse4Y3JwIpLr+WQvJmZmZmZtY3hac9KFe1rwkzMzMzMzPr05yEmZmZmZmZVVG1J+bo04ZHfs67VA35MYaIo+rqs2Js1dRAQ+b5PPrwuxhY09h+xXaMGTgwO8brK/MvKH2tpl/7ldrxp52+yTYDVmXH2fGBn2Tt/0PgzElnZrfj+GW3Z8d45ZCdsmPUP78mO8b7xz/Pl+ePzgsSsKHy3q/nLhnDoWvyPzfH/PeQ7BiX/CT/eb2jcVR2DAbCazW5Q2GCxVqX3ZRBFfjf5u1N+c/Jh2pWZsd4tn5Ydoylzw5lQ/Kf1/WH5b3Xthz2Oi+syj+fSnzP93vrlRSdkv12B1YLhmbGGdUE72rIbYx4LP/XOHl/1RQMrsBrs/ofFWgIsF5lwlSPJ+Yom3vC+qDcBAzITsCAiiRgvU13SMCgMglYb5OdgJGfgAEVScB6m/wEjG6TgPU23SEBAyqSgPU2uQkYVCIBoyIJmFlP5J4wMzMzMzPrvCZPzFEu/9vOzMzMzMysipyEmZmZmZmZVZGHI5qZmZmZWeeFJ+YoV9V6wiQ1Spov6SFJD0jaowIxJ0j6t6L1EyS9nI4zX9IlqXy6pP3biTVG0g2pfY9IujGVj5e0pijmfEkDJW0n6V5JdZK+mnsuZmZmZmbWN1SzJ2xNREwAkHQg8D3gw5kxJwCTgBuLymZFxCnFlSLirA7Emg7cEhHnpTbuXLTtqea2N5O0AvgScFhnGm5mZmZmZn1TV10TNhJ4BUDSWEl3pB6mRZI+lMpXSfofSfMkzZY0WdIcSU9LOkTSQAqJ01Fp36NaO5ikmZI+mZYXS/pW6o1bKGm7VG0ssKR5n4hY0NYJRMRLETGXytyawszMzMysZ2qKrn/0MNVMwoakZOlR4ELgnFT+KeDm1NO0CzA/lQ8D5kTERGAl8G3gI8AUYHpErAPOotDzNSEiZqX9mpOy+ZJObKUtyyJiN+AXQPNQwguA30i6XdKZkjYuqr9lUcwLcp8IMzMzMzPru7pqOOIHgEsk7QjMBS6SNAC4JiKak7B1wE1peSFQFxH1khYC49s4ztuGI5bwp/RzHvAJgIi4WdIWwEHAR4EHU/ugxHDEjpI0FZgKcPAGk5k0fKvOhDEzMzMz65aiyRNzlKtLhiNGxL3AhsBGEXEHsBewFLhU0nGpWn1ENPctNgF1ad8m8pPHuvSzsThWRKyIiMsi4jMUksO9Mo9DRMyIiEkRMckJmJmZmZmZdUkSlq7D6gcsl7Q58FJE/Br4DbBbGaFWAiMq1KZ9JQ1NyyOALYF/ViK2mZmZmZlZs2oORxwiqXmooYDjI6JR0t7AaZLqgVXAca0FKOF24IwU93uZ7ZsInC+pgUJyemFEzJU0vlRlSe8GailMMtIk6SvA9hHxemY7zMzMzMx6jh44MUZXq1oSFhH9Wim/GLi4RPnwouVppbZFxArgfS12nVki1glFy+OLlmuBvdPyD4AflNh3MbBjifIXgHFvOyEzMzMzM7M2VLMnzMzMzMzMepvwxBzl6qr7hJmZmZmZmfVJTsLMzMzMzMyqyMMRe5hKZM3z+g/JjrF+Y347HhjYkB8E2LSp5OWGZblywODsGPXkPyn3kP/aDJp0ZnaM79R+JzsGwMJdT86OcfX1o7NjVGKQxNABde1XaseYyP/KvWNw/vsd4LVz38gPMiD/G+nxfvXZMUaQ/5xsEgOzY6xRZYbjvFCTH+fOpvyJgx8bvC47xijyn9cBjYOyY2w8UNkxAJbX5E8+sF1T/vksq8B7ZHR9/uf32QGVeF67z4QOAyrQlBlLN84PAkyrSJQq8sQcZXNPmJmZmZmZWRW5J8zMzMzMzDqvyRNzlMs9YWZmZmZmZlXkJMzMzMzMzKyKqpaESWqUNF/SQ5IekLRHBWJOkPRvResnSHo5HWe+pEtS+XRJ+7cTa4ykG1L7HpF0YyofL2lNUcz5kgZKOlbSgvS4R9IuuedjZmZmZtbjNEXXP3qYal4TtiYiJgBIOhD4HvDhzJgTgEnAjUVlsyLilOJKEXFWB2JNB26JiPNSG3cu2vZUc9ubSXoG+HBEvCLpo8AMYPdOnIOZmZmZmfUhXTUccSTwCoCksZLuSD1MiyR9KJWvkvQ/kuZJmi1psqQ5kp6WdIikgRQSp6PSvke1djBJMyV9Mi0vlvSt1Bu3UNJ2qdpYYEnzPhGxoK0TiIh7IuKVtHofMK6Tz4WZmZmZWc8VTV3/6GGqmYQNScnSo8CFwDmp/FPAzamnaRdgfiofBsyJiInASuDbwEeAKcD0iFgHnEWh52tCRMxK+zUnZfMlndhKW5ZFxG7AL4CvprILgN9Iul3SmZKKb/SwZVHMC0rE+xzw5/KeDjMzMzMz64u6ajjiB4BLJO0IzAUukjQAuCYimpOwdcBNaXkhUBcR9ZIWAuPbOM7bhiOW8Kf0cx7wCYCIuFnSFsBBwEeBB1P7oMRwxGaS9qGQhO3ZyvapwFSAgzeYzKThW7XTNDMzMzMz6826ZDhiRNwLbAhsFBF3AHsBS4FLJR2XqtVHRPNVdk1AXdq3ifzksS79bCyOFRErIuKyiPgMheRwr7aCpOvGLgQOjYjlpepExIyImBQRk5yAmZmZmVmv09WTcvTAiTm6JAlL12H1A5ZL2hx4KSJ+DfwG2K2MUCuBERVq076ShqblEcCWwD/bqL8ZhR61z0TE45Vog5mZmZmZ9X7VHI44RFLzUEMBx0dEo6S9gdMk1QOrgONaC1DC7cAZKe73Mts3EThfUgOF5PTCiJgraXwr9c8CRgM/lwTQEBGTMttgZmZmZtajRFPPmxijq1UtCYuIfq2UXwxcXKJ8eNHytFLbImIF8L4Wu84sEeuEouXxRcu1wN5p+QfAD0rsuxjYsUT554HPv+2EzMzMzMzM2tBVU9SbmZmZmZn1SdUcjmhmZmZmZr1ND5wYo6u5J8zMzMzMzKyK3BPWw7wc67Jj7NFQ8vK8sjw6MDsEUwe+nh8E+E7d4OwYh6/NjzE48v8LtLxf/kfy+GW3Z8dYuOvJ2TEArnuw1L3Ny/PKUa3dc73jXn1uSHaMpatHZ8foX4F/FO7dsCY/CPDx1YuyYxyxQcnbJ5bl5JrV2TEubcqfJHePtfkvzt8H5X+3Any48Y3sGPfVDMuOMWWNsmMMUn12jLWlLykvy32DK/PabJv/K5jHB+a/10ZF/v/Q/1GBL6Q65ceozCsD6zflPycv1TRmx/jY2obsGNY3OAkzMzMzM7PO83DEsnk4opmZmZmZWRW5J8zMzMzMzDovfJ+wcrknzMzMzMzMrIqchJmZmZmZmVVRlyVhkholzZf0kKQHJO1RgZgTJP1b0fo0SV9tUWexpA3bibNdatuDkraUdKakhyUtSOW7p3pzJD2WyuZL+mTuOZiZmZmZ9ShN0fWPHqYrrwlbExETACQdCHwP+HBmzAnAJODGzDiHAddGxNmSPgB8HNgtIupSAlc8QfuxEVGbeTwzMzMzM+sjusvEHCOBVwAkjQVmpbL+wH9ExJ2SVgEXAPunul8HzgU2A74C3ARMB4ZI2pNCUtcqSeOBPwN3AXsAS4FDgX1SvEZJewE/A5ZFRB1ARCyr1EmbmZmZmfV00QN7orpaV14TNiQN4XsUuBA4J5V/Crg59ZLtAsxP5cOAORExEVgJfBv4CDAFmB4R64CzgFkRMSEiZnWgDVsDF0TEDsCrwOERcSPwS+AnEbEP8BdgU0mPS/q5pJa9db8vGo74tru5SpoqqVZSbe2qJzv63JiZmZmZWS/VlUnYmpQsbQccBFwiScBc4ERJ04CdImJlqr+OQm8XwELgrxFRn5bHt3KM1tLy5vJnIqI5yZtXKk5ErAImAlOBl4FZkk4oqnJsOo8JEbG8xP4zImJSREyaNHyrVppjZmZmZmZ9RbeYHTEi7gU2BDaKiDuAvSgMD7xU0nGpWn1ENCdPTUDz8MAmWh9WuRxYv0XZCAq9XjTHSBpbixMRjRExJyLOBk4BDu/ouZmZmZmZ9WpdPSlHDxwO2S2SMEnbAf2A5ZI2B16KiF8DvwF2KyPUSgpJVrM7gEMkjUjH+QTwUEQ0ltG2bSVtXVQ0AfhHGW0yMzMzMzP7l66cmGOIpOahgAKOj4hGSXsDp0mqB1YBx7UWoITbgTNS3O9FxCxJ5wN3SQrgJeDzZbZzOPAzSesBDcCTFIYmmpmZmZlZU1NXt6DH6bIkLCL6tVJ+MXBxifLhRcvTSm2LiBXA+1ps+xXwqxLxFgM7Fq3/sFT8iJhHYfbEUm3du1S5mZmZmZlZa7rFcEQzMzMzM7O+orvcJ8zMzMzMzHqiHjgxRldzElZFlRgtu7RxZfuV2rHnlq9kx9jyHyOzY2xyQHYIANZc35AdY/etns+Osfy5Ydkxdhi9JjvGK4fslB3j6uvfdsu7TnnlqBOzY6w/67fZMUYsvC07xrwTrsuO8d6a4e1Xasc2u7/tThidctfD+bfMuLJuQHaMwYPrs2PE6uwQPD2w5Aj5sjxbk/9dBDC4X36cjw1/KTtGQ0P+YJnRW+R/p/XfIP9PleGz18uOATCgJv83+Rzlf262aRqYHWPTJmXHGN7hac5a9/Cg/BgA9fmnw5DIf89PPKVCJ2S9npMwMzMzMzPrPPeElc3XhJmZmZmZmVWRkzAzMzMzM7Mq8nBEMzMzMzPrtAgPRyyXe8LMzMzMzMyq6B3rCZM0Grg1rb4baAReTuuTI2Jdi/obAEdGxC/bidsfWBYR60naClgIPAYIWAWcEBFPZLZ9X2B1RNyX1t8L/BIYBQwC5kTEf0jaH/gj8Eza9cWIODDn2GZmZmZmPYon5ijbO5aERcRyYAKApGnAqoj4YRu7bACcRCHZKcdjEdF8nJOBM4DPld3gt9oXWAbcl9bPB86NiP+TJGDHorq3R8RhmcczMzMzM7M+okuGI0o6XdKi9PhiKv4+sK2k+ZK+L2mkpNskPSBpgaSPdyD0SOCVdIydJM1N8RZI2kLSVumYF0l6WNIlkg6UdI+kxyVNkrQl8HngtLTvHsBYYAlAFCys/LNiZmZmZmZ9QdUn5pA0GTgWmAz0A+6X9FcKPVhbFfVqDQAOjYiVkt4F3A3cUCLktpLmU0jABgG7p/L/BH4YEbMkDaIwXHEcsC1wJPAo8ABQFxF7SDocOCMiPinpQgpDHv83teXHwB2S7gb+Avw2Il5Lx9knHR/gioj4fovznQpMBfj4BpOZODz/BqlmZmZmZt1GDxiOKOkg4DwK+ceFJf5mPwH4AbA0FZ0fERembccD30jl346Ii3Pb0xU9YR8C/hgRqyNiJXANsGeJegL+R9ICConPppI2LFHvsYiYEBFbAKfz5nDGe4BvSDod2DQi1qbyJyPikYhoAh4BZqfyhcD4Ug1OL8D2wFXAfsC9kppvV397Ov6Eli9m2ndGREyKiElOwMzMzMzMqktSP+AC4KMU/qY/RtL2JarOKvq7vjkB2wA4m0JHz2TgbEnr57apK5IwdbDecRQmwtgt9Y4tAwa3s891wF4AEXEpMAWoA26RtFeqU1dUv6lovYk2egYjYmlEXBQRB1N43t7bwfMwMzMzM7OuM5lCR8zTaXLAK4BDO7jvgcAtEbEiIl4BbgEOym1QVyRhdwBTJA2RNJzCE3AnsBIYUVRvFPBSRDRI+giwSQdi7wk8BSBpi4h4MiLOA/4P2LmMNr6lLZIOSrMyImljYH3guTLimZmZmZn1StEUXf5oxybAs0XrSyidWxye5pK4StKmZe5blqpfExYR90u6HJibin7RPNGFpFpJCykkTT8GrpdUS+HardamnW++JkwUerWmpvJPSToGqKeQMH0DKDWcsZRrgSslfQI4mULX5XmS1gIBfCUiXi5MlGhmZmZmZl2peB6GZEZEzGjeXGKXlpnb9cDlEVEn6STgYgozpndk37JVJQmLiGkt1s8Fzi1R76gWRbu3rJOsl+o/CQxp5ZjfBr7dovhV0rT5qc6ni5afbN4WEY8COxXtd08rx5jNm9eUmZmZmZn1Pd1gYo6UcM1oZfMSYNOi9XG0GNWWbq/V7NfA/xTtu3eLfedkNBXooinqzczMzMzMqmQusLWk96TJ9Y6mMJfEv0gaW7R6CPD3tHwzcICk9dOEHAeksixVH45oZmZmZmZWLWmOiVMoJE/9gIsi4mFJ04HaiLgO+JKkQ4AGYAVwQtp3haRzePNSqukRsSK3TU7CqmhQhyeGbF1jNGXHGDwmv8t4yIv12TEal6/JjgEwmOxZQlm2dHh2jDfqBmTHGLaurv1K7ah/Pv95zX+XFbz6XMnRwmUZsfC27Bj9d9o3O8a6uDo7xoAKfAcM3GqD7BgAr/0tvy01+W95hozK/y5Ztjo/xsSG/IEhAyr0K/VdW72eHUMVGOfy5CMdvYy6daNrKvM9n6tGlRkqtaYx/zUePKAC77WuH/kFdK/hVJV4TtZW4lL/bjAsr0tU6g+Hd1BE3Ajc2KLsrKLlrwFfa2Xfi4CLKtme7vT5MTMzMzMz6/XcE2ZmZmZmZp3WgSnirQX3hJmZmdn/Z+/O4+wqyvyPf74JWUnYF5WtUQLIEpoQIiBLlLiAiDDCAKIDblFGBgcHBUQZBkRxmfGHoGgcHUQFogQxuACyRHaykZAECEsSBGSRRUxISNLdz++PWw2Hm9vL7Tp0+na+79frvPrcOlXPqXu6+3aeVJ06ZmbWi5yEmZmZmZmZ9SJPRzQzMzMzs57zdMS6NeRImKSfSnpW0vwu6o2XtF/h9TmSnpQ0J20XpPJpksZ2EOMwSfdKmivpfkmf6SyWmZmZmZlZZxp1JOxS4GLgsi7qjQeWAXcWyr4bEd/pzkkkDaHy5O1xEfFEet3Uk1hmZmZmZv1SAyxR39c05EhYRNxK5SFqr5J0Shqpuk/SlZKagM8Cp6aRqgO6E1vSMknnSroHeAeVRPX5dN6VEbGwzPdiZmZmZmbrloZMwjpwBrBnRIwGPhsRS4AfUhmtao6I21K9UwtTCN9XI876wPyIeEdK9qYCj0m6QtLx0usegdlVLCRNlDRT0szpyx4u7c2amZmZmVlj6k9J2H3ALyV9FGjppF57UtYcEdfXON4KTGl/ERGfAg4GpgOn8fqnZXcVi4iYFBFjI2LsuBGj6n1PZmZmZmZ9WrTFWt8aTX9Kwj4AfB/YC5glqaf3u70SEa3FgoiYFxHfBd4DfDivm2ZmZmZmti7rF0lYmiK4TUTcAnwJ2AgYASwFRmbEHSFpfKGoGXgso6tmZmZmZv1LWx/YGkxDro4o6QoqKx9uJukJ4DzgY5I2BERlmuDfJV0LXCXpQ8C/9eRUwJck/QhYAbwMnFjCWzAzMzMzs3VUQyZhEXFcjeIf1aj3EDC6UHRbdZ1Ub3xhf0RhfylwaAdtzuleb83MzMzMzF7TkEmYmZmZmZn1DY24MMba1i/uCTMzMzMzM2sUHgnrRW3k/y/BpPWHZMe46p5NsmO8ouwQHDz9xfwgQHMMz47xuxJu6BwV+d/fF54enB3jir+vyo4xfNDK7BgATy7fNDvGrBOnZsdYFb/JjvGb2Rdlx/jxnmdnxxgwqik7BsC3Bz2aHWNn5f/MDx7R2nWlLlz0qaHZMVoefTo7xs9vfFN2DIARE7bLjnH39/J/hx8ePCg7xrLpb86O8Y8BA7NjLB1Qwh8tYPvIv66jWvP/6fXXgfl/tDZty/9/+Dbyr+vwPjSAsrqEz7Qnr3ihhJ7Ajvl/LqyPcxJmZmZmZmY914CrE65tno5oZmZmZmbWizwSZmZmZmZmPRYeCaubR8LMzMzMzMx6kZMwMzMzMzOzXtQQSZikbSTdIukBSQskfb7O9tMkjU37SyTNkzQnbftJapI0v4O2AyR9T9L81G6GpO07ipX/bs3MzMzMGkhbH9gaTKPcE9YC/EdEzJY0Epgl6U8RcX8P470rIp5rfyGpqVYlSesBRwNvAUZHRJukrYGXO4plZmZmZmbWmYZIwiLiKeCptL9U0gPAVpJ+ANwDvAvYCPhkRNwmaRjwf8AuwAPAsO6eS9KJwAeAocD6wO+ApyIqtxxGxBNlvS8zMzMzs0bnhTnq1xBJWFEatdqTSvIFsF5EjJN0KPCfwATgJGB5RIyWNBqYXRXmFkmtwMqIeEeN0+xLZeTrhTTydbukA4CbgF9ExL3djSVpIjAR4EObjGPvETv07I2bmZmZmVm/0BD3hLWTNAKYAvx7RPwjFV+dvs4CmtL+gcAvACLiPuC+qlDviojmDhIwgD9FxAup/RPATsCZVGac3iTp4O7GiohJETE2IsY6ATMzMzMzs4YZCZM0iEoC9suIuLpwaGX62srr309knK54zxcRsRL4I/BHSc8AR1AZFTMzMzMzW7d5OmLdGmIkTJKAnwAPRMT/dKPJrcDxqe1uwOiMc4+R9Ja0PyDFeqyn8czMzMzMbN3WKCNh7wQ+BsyTNCeVfbmT+pcA/yfpPmAOMD3j3FsAP5Y0JL2eDlycEc/MzMzMrN/wwhz1a4gkLCJuB1Tj0B8KdZ4j3RMWESuAYzuI1VSjbAmwW9q/FLi0cOw64LruxjIzMzMzM+tMQ0xHNDMzMzMz6y8aYiTMzMzMzMz6Jk9HrJ8ichYRtHqc3nRc9sV+S9vAMrpSyiI2y5X/s1NGjI3b8gd07+Cl7BjbD1g/OwZUlvnMVcYQ95aR/38065Xw8fLigPyf1kFRazZz/bZoy4/z6XvPzY5xze5fzY4xY0j+dR0R+T9p5XxnYGUJnyU7rs5/P0+W8F+bO6zKfy/zhnRdpyurs3JDWzYAACAASURBVBYZfs3facmOMbSET7X1S4hRxs/8BiX8AX5+QDnfm2ElfDYOL6ErZbyfMj4DyriqZX2mfW3J5WWF6hXPHnzQWk8otrjpzw11zTwStg7qTwlYf9OfErD+pj8lYP1Nf0rA+pv+lID1N/0pAbO1zyNh9fOnkpmZmZmZWS9yEmZmZmZmZtaLPHnCzMzMzMx6rqR7r9clHgkzMzMzMzPrRVlJmKRlZXUkxTtC0n2SHpQ0X9JRGbGaJM1P++MlvSRpTtpuTOWflfQvXcQZLumXkualPt0uaUQ61lqIOUdSU0/7a2ZmZmbWiKJt7W+Nps9MR5S0B/Ad4D0RsVjS9sCNkhZHxKwSTnFbRBxWLIiIH3aj3eeBZyJi99TPnYDV6diKiGguoW9mZmZmZraOKH06oqTtJN2URrRukrStpIGSFqliI0ltkg5M9W+TtANwGvD1iFgMkL5+HfiPVG+apLFpfzNJS9J+U4oxO2371dHXcySdVoj/TUnTJT0k6YBU7c3Ak+1tImJhRKzMvExmZmZmZraOeiPuCbsYuCwiRgO/BL4XEa3AQ8AuwP7ALOAASUOArSPiEWDXVF40M7XpzLNURs/GAMcA3+ug3gGFaYNndVBnvYgYB/w78J+p7KfA6ZLukvQ1SaMK9YcVYv6mi36amZmZmfU70aa1vjWaN2I64r7AP6X9nwPfSvu3AQcC2wPfAD4N/BmYkY6LNR9W3p0rOgi4WFIzlWfd7thBvTWmI9Zwdfo6C2gCiIg5kt4KvBeYAMyQtG9EPEA3piNKmghMBHjvJmNpHrlDN96SmZmZmZn1V72xOmJ7YnUbcAAwDvgDsBEwHrg1HV8AjK1qO4bKaBhAC6/1d2ihzqnAM8Aeqf3gjL62TzNspZCgRsSyiLg6Iv4V+AVwaHcDRsSkiBgbEWOdgJmZmZmZ2RuRhN0JHJv2jwduT/v3APsBbRHxCjAH+AyV5Awqi3Kc2b7CYPr678C30/ElwF5pv7hq4obAUxHRBnwMGFjie0HSOyVtnPYHU5ke+ViZ5zAzMzMza1Rre2XERlwdMTcJGy7picL2BeAU4OOS7qOSFH0eIC1m8Thwd2p7GzASmJeOzwFOB66V9BCVe8hOioiFqf53gJMk3QlsVujDD4ATJN1NZSriy5nvqdrbgD9LmgfcS2VkbkrJ5zAzMzMzs3VE1j1hEdFREvfuDuofUNi/HLi86vjVpPuyJF0AfE3S+yJiVUQ8CIwuVP9KavNwVfmZqXwJsFvanwZMq9Gfcwr74wv7z/HaPWGXAZd18H5G1Co3MzMzM1tXRDTewhhrW595Tli1iDhjbffBzMzMzMysbL2xMIeZmZmZmZklfXYkzMzMzMzM+r5GXBhjbXMS1os2ivyFG4eW8EN+xA5PZMd48tENs2Ps9PFh2TEAzrysNTvGySuGZ8fYYnj+mjCbbbUsO8bChzfrulIXbh1aziKj41tWZMfY8R3PZ8cYvMMm2TEGjGrKjnHN7l/NjnHEvPOyYwD8ZczZ2TFeGlD9aMf6nXFSzlNFKpbdsCg7xrBR+Z9HU67N/90DOOyKg7NjTLio5q3MdXngzk2zY7x9//zfXw3Iv9fk4ds3yo4BsMnGy7Nj/Grp5tkxhnTrMaqd2yL/TyebtuQHeX5oOZOytmzNj/PXgfn/yDr7v7bNjmHrBidhZmZmZmbWY9HmhTnq5XvCzMzMzMzMepGTMDMzMzMzs17k6YhmZmZmZtZjkX+L8Dqnz42ESdpS0uWSFkmaJekuSUfWqNckaX6N8nMlTejGefaUFJLeV1bfzczMzMzMutKnRsIkCbgG+FlEfCSVbQccXlWvw35HRHeX/DoOuD19vb6DvijCi26amZmZmXXEC3PUr6+NhL0bWBURP2wviIjHIuIiSSdK+rWka4EbOgog6VJJR0k6RNKvCuXjU9v2BOso4ETgvZKGpvImSQ9I+gEwG9hG0nvTaNzsdP4Rqe7ZkmZImi9pUoppZmZmZmbWqb6WhO1KJfnpyL7ACRHx7m7E+hOwj6T10+tjgMlp/53A4oh4FJgGHFpotxNwWUTsCbwMfAWYEBFjgJnAF1K9iyNi74jYDRgGHNaNPpmZmZmZ2TquryVhryPp+5LmSpqRiv4UES90p21EtADXAR9M0xc/APw2HT4OuDLtX5let3ssIu5O+/sAuwB3SJoDnABsl469S9I9kuZRGcHbtYP3MFHSTEkzpy97uDtdNzMzMzNrGNGmtb41mj51TxiwAPhw+4uI+JykzaiMQEFlZKoek4HPAS8AMyJiqaSB6RyHSzoLELCppJE1ziEqiV8xSSNNX/wBMDYiHpd0DjC0VgciYhIwCeAb233Ua8eYmZmZma3j+tpI2M3AUEknFcqGZ8SbBowBPs1rUxEnAHMjYpuIaIqI7YApwBE12t8NvFPSDgCShkvakdcSrufSPWJHZfTRzMzMzKxhRaz9rdH0qSQsIoJKMnSQpMWSpgM/A07voMlOkp4obEdXxWsFfgcckr5CZerhb6riTAE+UqM/f6OyeMcVku6jkpTtHBF/B34MzKOymuOM6rZmZmZmZma19LXpiETEU8CxHRy+tFBvCTCoRp1fV8U7GTi58PrEGuecCkxNL3erOnYzsHeNNl+hsmiHmZmZmZlZt/W5JMzMzMzMzBpHIy6Msbb1qemIZmZmZmZm/Z1HwszMzMzMrMciPBJWL0UjLifSoM7f7vg+cbG3acn/RdmwtS07xtIB5QzEzhncmh3jvSvyvzXPDxyYHWP5gPzvzXFfGJYd40/fqvdpELV9cvnMrit14fY37ZAd46VlNZ8gUZdvD2rJjvHWV58d33NbtuX/nAGcMvvc7Bgn7PUf2TG21JDsGMNLmNSxKJZnx9hW+b97APmfaLDPyvxrUkY/yviUH9mW35P8v1gVfxmc/3/Xiwbmv5+RkX9lh5D/92aDEi7sEwPL+u7k27o1/7ruvvqVEnoC73z6qobKah7d7X1r/d+4b5t/fUNdM09HNDMzMzMz60WejmhmZmZmZj0WfWdAs2F4JMzMzMzMzKwXOQkzMzMzMzPrRZ6OaGZmZmZmPdbm1RHrVtpImKRWSXMkzZU0W9J+JcRslnRo4fWJkv6WzjNH0mVdtB8v6XeFthen/XMkPZliPCjpEkmdXgtJR0japfB6mqSxee/QzMzMzMzWNWVOR1wREc0RsQdwJvCNEmI2A4dWlU1O52mOiH/JiP3diGgGdgF2Bw7qov4Rqa6ZmZmZmSURWutbo3mj7gnbAHgRQNKbJd2aRp3mSzoglS+T9E1JsyTdKGlcGl1aJOlwSYOBc4FjUttjOjpZcVRK0maSltTR18HA0EJ/Py1pRhrRmyJpeBrVOxz4durL21LboyVNl/RQ+/syMzMzMzPrTJlJ2LD26X3A/wLnpfKPANenUac9gDmpfH1gWkTsBSwFvga8BzgSODciVgFn89rI1+TUrj0pmyPp4xn9PVXSHOAp4KGIaO/X1RGxdxrRewD4ZETcCUwFvpj68miqu15EjAP+HfjPWieRNFHSTEkzZyx7JKO7ZmZmZmbWH5S5MMeKlGghaV/gMkm7ATOAn0oaBFxTSHZWAdel/XnAyohYLWke0NTJeSZHxMkl9Pe7EfGd1K+rJB0bEVcCu0n6GrARMAK4vpMYV6evszrqc0RMAiYBnL/d8Wv9aeJmZmZmZmWKtsabDri2vSHTESPiLmAzYPOIuBU4EHgS+Lmk9vu4VkdEe1LSBqxMbduoPzls4bX3MrTOvq6mkgwemIouBU6OiN2B/+oi3sr0tRWvNGlmZmZmZt3whiRhknYGBgLPS9oOeDYifgz8BBhTR6ilwMhu1FsC7JX2j6ojPpIE7Ae0TzEcCTyVRsiO70FfzMzMzMzWGRFrf2s0b8Q9YXOAycAJEdEKjAfmSLoX+DBwYR0xbwF26WphDuA7wEmS7qQyAtcd7feEzacyivWDVP5V4B7gT8CDhfpXAl+UdG9hYQ4zMzMzM7O6lDaFLiIGdlD+M+BnNcpHFPbPqXUsIl4A9q5qemmNWA8CowtFX0nl04Bpaf/S9rbpfK87ZyHWJcAlNcrv4PVL1I8vHHuOzu9jMzMzMzMzA3wfk5mZmZmZZfDCHPV7o54TZmZmZmZmZjUoGvFOtgZ1dlP+EvWDSvh2lfEd37iE//F4YmBrCT2B0atqzoSty/zBbdkxhpTwtPYRpcTIDlGauQNXZcd4SwzKjlHG/zatUP6FHVzC97elpP9sfCSWZ8f42az/zo5x5tizsmOMiPzv8MYlfG+eHpD/OQKVVa1ybdSWf03+MmB1fj9KmHDTVsJfrU1LuB4Az5fwPS7jc2D9EmKUobWEbrxSyr9KyrkmzwzI/3fJ0JLGN85d8su+8U3upvlvPWyt/+tjt0W/a6hr5pEwMzMzMzOzXuQkzMzMzMzMrBd5YQ4zMzMzM+ux6CNTZBuJR8LMzMzMzMx6kUfCzMzMzMysx7zOX/2yR8IktUqaI2mupNmS9ishZrOkQwuvT5R0cVWdaZLGdhHn1TqSjpb0gKRbJI2X9FLq932SbpS0RZ19OkfSaT17h2ZmZmZmtq4qZeXmiGiOiD2AM4FvlBCzGTi0y1r1+STwrxHxrvT6ttTv0cAM4HNroU9mZmZmZraOKfuesA2AFwEkvVnSrWm0ab6kA1L5MknflDQrjUCNSyNWiyQdLmkwcC5wTGp7TFcnlXSJpJmSFkj6rxrHzwb2B34o6dtVxwSMLPR7nKQ7Jd2bvu7USZ92KfT9lJ5eNDMzMzOzRtUWWutboykjCRuWEpMHgf8FzkvlHwGuj4hmYA9gTipfH5gWEXsBS4GvAe8BjgTOjYhVwNnA5DRSNTm1a0+A5kiaAxSnIp4VEWOB0cBBkkYXOxgR5wIzgeMj4oup+IAU5y/ABOCnqfxB4MCI2DP14+ud9Gln4H3AOOA/Ja3xVFlJE1OCOHP20ke6d0XNzMzMzKzfKnM64s7A+4HL0ujSDODjks4Bdo+Ipan+KuC6tD8P+HNErE77TZ2cpz0Bak6J3czCsX+WNBu4F9gV2KUb/W6fjrgN8H/At1L5hsCvJc0HvpvideT3EbEyIp4DngW2rK4QEZMiYmxEjB0zcodudMvMzMzMzPqzUqcjRsRdwGbA5hFxK3Ag8CTwc0n/kqqtjnh1DZU2YGVq20YPVmuUtD1wGnBwur/r98DQOsNMTX2FykjeLRGxG/DBLmKtLOy34tUmzczMzGwdE6G1vjWaUpMwSTsDA4HnJW0HPBsRPwZ+AoypI9RSKvdpdccGwMvAS5K2BA6p4zzt9gceTfsbUkkcAU7sYZ/MzMzMzMxqKmPkZli6twpAwAkR0SppPPBFSauBZcC/dBSghluAM1LcTldbjIi5ku4FFgCLgDu6eY72e8IEvAR8KpV/C/iZpC8AN/ekT2ZmZmZm6wo/J6x+2UlYRAzsoPxnwM9qlI8o7J9T61hEvADsXdX00qq64wv7J3bQh/Ed7E+jMuJVq81dwI6Foq920qdiu906OmZmZmZmZtau7CXqzczMzMzM+hRJ75e0UNIjks6ocfwLku6XdJ+km9KtVe3HWgurtE8toz9eSMLMzMzMzHqsrz+nS9JA4PtUHov1BDBD0tSIuL9Q7V5gbEQsl3QSlVuU2p8NvCKtzl4aJ2G9aEgJ82V3XJUfY5O2luwYzw3I/9H5+NEvZ8cAOO6qtuwYl+29LDtG2/L8b/CTCzbIjnFra82ZtnV5aODq7BgAnxuwPDvG0KH5fRm2YX6MwSNas2P88KGts2OccdLg7BgAZ12S/37OHHtWdoxvzDw/O8Zvd/9qdoxxWz2VHeOeJ9+UHQPgkOOWdl2pCwuuzP+M3uldf8+OQUv+5+LKZ/M/4+fe/+bsGACbDV6RHeMHA9d4pGjd3h71LgK9ppeV/73ZuC3/H97LS5qTVca/sYaWMEHsS0fl/3vC3hDjgEciYhGApCuBDwGvJmERcUuh/t3AR9/IDjkJMzMzMzOzHmuAJeK3Ah4vvH4CeEcn9T8J/LHweqikmUALcEFEXJPbISdhZmZmZmbW0CRNBCYWiiZFxKT2wzWa1Bw/lfRRYCxwUKF424j4q6S3AjdLmhcRj9Zq311OwszMzMzMrKGlhGtSB4efALYpvN4a+Gt1JUkTgLOAgyJiZSH2X9PXRZKmAXvy2jOGe8RJmJmZmZmZ9VhfX5gDmAGMkrQ98CRwLPCRYgVJewI/At4fEc8WyjcGlkfESkmbAe+ksmhHFidhZmZmZmbWb0VEi6STgeuBgcBPI2KBpHOBmRExFfg2MAL4tSSAv0TE4cDbgR9JaqPyeK8LqlZV7JGGS8IktQLzCkVHRMSSTuovobLc5HOSlkXECElNwAPAQipzRF8GPh4RCzuJ0wTsFxGXp9cnprgnZ7wdMzMzM7OGVsLilG+4iPgD8IeqsrML+xM6aHcnsHvZ/WnEhzWviIjmwrakh3EeTe33AH4GfLmL+k1UDVuamZmZmZnVqxGTsDVIOlHSxYXXv5M0vo4QGwAvprZNkm6TNDtt+6U6FwAHpCdln5rK3iLpOkkPS8qeG2pmZmZmZv1fw01HBIZJmpP2F0fEkT2M87YUZyQwnNeeFfAs8J6IeEXSKOAKKstUngGcFhGHwavTEZuprI6yElgo6aKIKD6D4HXLZX5ok3HsPWKHHnbXzMzMzKzvaYCFOfqcRkzCVkREcwlxHm2PI+kYKktavh8YBFwsqRloBXbsJMZNEfFSinE/sB2vfxDc65bLPH+74xthyqyZmZmZmb2BGjEJq6WF10+tHFpn+6nA/6X9U4FngD1SzFc6abeysN9K/7meZmZmZmbdEh4Jq1u/uCcMWAI0SxogaRtgXJ3t9+e1B65tCDwVEW3Ax6gsYwmwlMrURTMzMzMzsx7rLyM3dwCLqSxdPx+Y3Y027feECVgFfCqV/wCYIulo4BYqy9cD3Ae0SJoLXEpayMPMzMzMzKweDZeERcSIGmUBHN9B/abqtmlZ+2Ed1H8YGF0oOjOVrwYOrqp+aaHdYd3ovpmZmZlZv9K2tjvQgPrLdEQzMzMzM7OG0HAjYWZmZmZm1ncEXpijXk7CGszIttbsGPcPHpQd4+USxlAfmZIfA2DUgDVmqNbtoTsGZ8d4qTU/xnolDOi/NDT/SQgjX12PJs/P2/LXsonl+f14bvnq7BgXfareRVfXtPLh/O/vshsWZccAGM5W2TEGlbAa1m93/2p2jA/NOy87xvTdvpQd486h+Z/PAGNvWpEd4+XWjbNjzLpx8+wYg5V/Tf5O/t+slwaW85k2cFX+58CgYfmf0S8rP8aWrfm/vy+VcFnzv7sVLwzIvybrlfAgocVTypmYt/t3SgljfZinI5qZmZmZmfUij4SZmZmZmVmPtZUwiriu8UiYmZmZmZlZL3ISZmZmZmZm1os8HdHMzMzMzHqszasj1q1hRsIkLat6faKki7to82odSZtLukfSvZIOkLRE0jxJc9LXD3WjD18u7DdJmt/T92NmZmZmZuumhknCSnAw8GBE7BkRt6Wyd0VEM3AU8L1uxPhy11XMzMzMzNYdgdb61mj6RRIm6YOFUa4bJW1ZdbwZ+BZwaBr5GlYVYgPgxUL9ayTNkrRA0sRUdgEwLLX/Zao6UNKPU70basQ1MzMzMzN7nUZKwtoToDmS5gDnFo7dDuwTEXsCVwKve+pmRMwBzgYmR0RzRLQ/CfOWNKXwz8BXCk0+ERF7AWOBUyRtGhFnACtS++NTvVHA9yNiV+DvwIerOy1poqSZkmbOWPZI7jUwMzMzM7MG10gLc6xIUweByv1eVJIkgK2ByZLeDAwGFncz5rsi4jlJbwNukjQtIpZRSbyOTHW2oZJsPV+j/eKU4AHMApqqK0TEJGASwPnbHe+nKJiZmZlZv9K2tjvQgBppJKwzFwEXR8TuwGeAofU0johHgWeAXSSNByYA+0bEHsC9ncRbWdhvpbGSWjMzMzMzWwv6S9KwIfBk2j+h3saStgC2Bx4D9gFejIjlknZOr9utljQoIlbndtjMzMzMrD9oxIUx1rb+MhJ2DvBrSbcBz9XR7pZ0f9ktwBkR8QxwHbCepPuA84C7C/UnAfcVFuYwMzMzMzOrS8OMhEXEiKrXlwKXpv3fAr+t0aZY59X99Lqpg/OsBA7p4NjpwOmFot0Kx77T1XswMzMzMzNrmCTMzMzMzMz6Hi/MUb/+Mh3RzMzMzMysIXgkrBcNj/ybFm8flp83/1Pr0uwYtMHC1hFd1+vEA4xktfKvyRYl/BRfPjg/xtASbkrddXV+R7ZpgdsGrey6Yhe2ivy+7PdK/lMZFg0emB1jr5b835uWR5/OjvHFd8Fvb3hTVozrHtyGIz9Yz62vtS16ZHl2jH0i7zMAYNxWT2XHmL7bl7qu1A3j5n8rrz1w665nZvdjy9N3zo5xx3kvZseYNbglO8ZuLXUtVtyhlSXc87+6lBiDsmPsWMKQwfMD8oO8MiD/ggyJypZHvFjCkMCIEh4C9HQJ1/Uvy/M/FwF2LyVK7/FIWP08EmY9kpuAAaUkYLamvpKA2ZpyEzCglATM1pSbgEE5CZitqa8kYLam/ASMUhIws0bkH30zMzMzM7Ne5OmIZmZmZmbWY35OWP08EmZmZmZmZtaLPBJmZmZmZmY91uaBsLp1ayRMUqukOZLmSpotab96TiLpHEmn9ayLPSdpT0kh6X2FsiZJ8+uMM0LSJZIelXSvpFmSPl1+j83MzMzMrL/r7nTEFRHRHBF7AGcC3yjj5JLe6JG444Db09cc/wu8CIyKiD2B9wObVFeSlL+WtpmZmZmZ9Ws9uSdsAyoJCQCSvihphqT7JP1XofwsSQsl3QjsVCifJunrkv4MfF7SdpJuSu1vkrRtqtdR+aVpVOoWSYskHSTpp5IekHRp4TwCjgJOBN4rqfiwkvUk/SzFvkrScEmHSPpVof14SddKehuVx798JSLaACLibxHxzUK9WyRdDszrwfU0MzMzM2tYbWitb42mu0nYsDQd8UEqo0LnAUh6LzCKSpLSDOwl6UBJewHHAnsC/wTsXRVvo4g4KCL+G7gYuCwiRgO/BL6X6nRUDrAx8G7gVOBa4LvArsDukppTnXcCiyPiUWAacGih/U7ApBT7H8C/An8C9pG0fqpzDDA5xZ3bnoB1YBxwVkTs0kkdMzMzMzOzuqcj7kxlKt5laaTpvWm7F5gN7EwlKTsA+E1ELI+IfwBTq+JNLuzvC1ye9n8O7N9FOcC1ERFURp6eiYh5KUlaADSlOscBV6b9K3n9lMTHI+KOtP8LYP+IaAGuAz6Ypkl+APht9YVII3xzJP21UDw9IhZX1031J0qaKWnmXcserlXFzMzMzKxhRR/YGk3d0xEj4i5gM2BzQMA3UoLWHBE7RMRP2qt2Eublzk7RjfKV6WtbYb/99Xrp3qwPA2dLWgJcBBwiaWQH52h/PRn4ZyqjbDMiYilwP7CHpAEAEXF+RDRTmZbZ5fuJiEkRMTYixu47YlRH1czMzMzMbB1RdxImaWdgIPA8cD3wCUkj0rGtJG0B3AocKWlYSnw+2EnIO6lMXQQ4nspCGp2Vd8cEKlMIt4mIpojYDpgCHJGObytp37TfvngHVKYtjgE+TRqti4hHgJnA19oX3kj3lzXe5FMzMzMzM1vrurs64TBJc9K+gBMiohW4QdLbgbsqsxNZBnw0ImZLmgzMAR4Dbusk9inATyV9Efgb8PEuyrvjOOA3VWVTgJNSXx4ATpD0I+Bh4BKAiGiV9Dsqi3mcUGj7KeDbwCOSXgBWAKfX0R8zMzMzs36ps4UTrLZuJWER0eHS6xFxIXBhjfLzgfNrlI+ver2EyvS/6nodlZ9YVWe3GseuqtFuKq/dm9bhAhoRcTJwclXZP4DPdFB/GpURNDMzMzMzsy71ZIl6MzMzMzMz66E3+mHJZmZmZmbWj7XJSyXUyyNhZmZmZmZmvcgjYb1oufKfYnCMlmbH+M2ADbqu1IWWDu8S7L55bS/lBwHerGHZMZ6OV7JjDCX/ogwYlP9ehpTwfysrVM4ttg8Myb8mjw9oyY4xqISPup/f+KbsGEtL+MSdcu1m+UGAbQe1Zsd4uoSfk3uezL+udw7Nfy+v7HpmdowDF3wjOwbA3OYvZMe4aXAJH9IlWLhe/v+Ory7hCUArS1o2YNCA/M/Xpra+8U+vxwfk/96MiPzrsUVbOSMoy0sIs1lb/vu5cujy/I5QeVhtI2nE53StbR4JMzMzMzMz60VOwszMzMzMzHpR3xgTNzMzMzOzhuTnhNXPI2FmZmZmZma9qJQkTNKywv6hkh6WtK2kz0r6l1R+oqS3dBHnREkXl9GnQszfSrqrquxSSUfVGef9kqZLelDSHEmTJW1bZl/NzMzMzBpNm9b+1mhKnY4o6WDgIuC9EfEX4IeFwycC84G/lnnOLvqzETAGWCZp+4hY3MM4u1F5X4dHxAOp7HCgCfhLVd31IiJ/OTczMzMzM+uXSpuOKOkA4MfAByLi0VR2jqTT0qjTWOCXaRRpmKS9Jd0paW4aYRqZQr1F0nVpNO1bhfjvlXSXpNmSfi1pRCpfIum/Uvk8STsXuvVh4FrgSuDYqi5PkHSbpIckHZZi3SNp18I5p0naCzgd+Hp7AgYQEVMj4tZCva9L+jPw+RIup5mZmZmZ9VNlJWFDgN8CR0TEg9UHI+IqYCZwfEQ0A63AZODzEbEHMAFYkao3A8cAuwPHSNpG0mbAV4AJETEmxSo+SOW5VH4JcFqh/DjgirQdV9WtJuAgKo9i+KGkoVSStX8GkPRm4C0RMQvYFZjdxTXYKCIOioj/7qKemZmZmVm/0YbW+tZoykrCVgN3Ap/sZv2dgKciYgZARPyjMIXvpoh4KSJeAe4HtgP2AXYB7pA0Bzghlbe7On2dRSW5QtKWwA7A7RHxENCSphW2+1VEtEXEw8AiYGfgV8DR6fg/yQq8TwAAIABJREFUA7+u7rikTdNo3kOSignf5FpvVNJESTMlzZyx7JGur4yZmZmZmfVrZSVhbVSSlr0lfbkb9UXHD9deWdhvpXLfmoA/RURz2naJiE/WaNNeHyqjaRsDiyUtoZKcFackVp8/IuJJ4HlJo1P7K9OxBVTuLSMink+jeZOAEYX2L9d6MxExKSLGRsTYvUfs0MFbNjMzMzNrTNEHtkZT2j1hEbEcOAw4XlKtEbGlQPt9Xw9SufdrbwBJIyV1tkjI3cA7Je2Q6g+XtGMXXToOeH9ENEVEE7AXr0/CjpY0QNLbgLcCC1P5lcCXgA0jYl4q+xZwlqS3F9oP7+L8ZmZmZmZmayh1dcSIeEHS+4FbJT1XdfhSKvderQD2pTLSdJGkYVTuB5vQSdy/SToRuELSkFT8FeChWvUlNQHbUkne2mMslvQPSe9IRQuBPwNbAp9N0x8BrgIuBM4rtJ0n6fPAZWkBkeeprIr4nx1fDTMzMzMzszWVkoRFxIjC/uPA9unlbwvlU4AphWYzqNzrVXRp2trbHFbYvxnYu8a5mwr7M4Hx6eVWNeqOSbv3dPJenqHGdYmI3wO/76DN+FrlZmZmZmb9XSM+p2ttK206opmZmZmZmXWt1OmIZmZmZma2bmlb2x1oQB4JMzMzMzMz60UeCetFQyJ/wuyNrRtmxzhhs6ezYzz05KbZMU5p/kd2DICvL1w/O8bhLRtkx9iqZXV2jC2HLc2OcUtb/s/I0wPK+T+tg1prPrmhLkMHtnRdqQtb7JD/szZiwnZdV+rCHy5uzY5x2BUHZ8cA+OqJf8qOMaiEfhxyXP7P/NibVmTH2PL0nbNjzG3+QnYMgD3m/E92jLMOPCk7xvwX8j/nx2z9THaMlpUDs2M88Gz+ewHYeMCq7Bi3DM5/P4NL+PfEm9ry/x9+WAnrgr9Y0nBA/lWFZ0v42/eDw17pupIZTsLMzMzMzCxDIz6na23zdEQzMzMzM7Ne5CTMzMzMzMysF3k6opmZmZmZ9ZifE1Y/j4SZmZmZmZn1om4lYZI2lTQnbU9LerLwenCN+ptI+mzh9Q6SVqT6D0i6VFJpo3CSfi/ptqqyX0g6os44h0qaIenB1NcrJG3djXbrSfp7vf02MzMzM2t0bX1gazTdSsIi4vmIaI6IZuCHwHfbX0dErfVaNwE+W1W2MLXfHdge+HBOx9tJ2jTF3FLSthlx9gD+H/DRiNgZ2BOYDKyxLnWZCaSZmZmZma1bsqcjSvqSpPlp+7dUfAGwUxpNuqBYPyJagBnAVqn9pyRdLel3khZLOknSFyXdK+lOSRuleqdKul/SXEm/KIQ8CriGSsJ0TFX33ifpNkkPSTokxZkpaadC/29PCdgZwHkRsTD1MyLimoi4o1DvfEm3AidLepukeyTNAM7JvY5mZmZmZrZuyErCJI0DjgfGAfsC/yppNJWEZmEaKTujqs0wYG/g+kLxrlQSqH2AbwIvRsSewCzgo6nOl4DmiNgDOLnQ9jjgirQdV9XFbYCDgA8CkyQNoZKs/XPqy9bAphExN/VhdhdveYOIODAi/h9wEXBhROwN/K2jBpImpsRv5t3LHu4ivJmZmZlZY1nbUxH77XTEThwATImI5RGxlMqI1P4d1N1J0hzgeeCRiFhQOHZzRLwcEc8Ay4BrU/k8oCntLwB+Iel4YDWApK2AbYG7I+J+YKCknQtxfxURbWl063FgFPAr4Oh0/Jj0+nUkbZFG8R6W9O+FQ1cW9velktAB/LyD90xETIqIsRExdp8RozqqZmZmZmZm64jcJKyeBSnb7wnbAThI0qGFYysL+22F1228toz++6jcjzYOmClpIJUkalNgsaQlVBKyYwuxqh/gHRHxGLBM0i6pfXsitQAYkyo9m/r6E2BEof3LVbH9gHAzMzMzW6eF1v7WaHKTsFuBIyUNkzQC+BBwG7AUGFmrQUT8FTgzbd2SEq6tI+Jm4IvA5sBwKtMPJ0REU0Q0UUnQilMSj1bFjlSmJrbPB5yczj8kjaABfAs4u3i/WDpHR+4mTWukMiXTzMzMzMysS1lJWERMp3Iv1gwqScklETEvTSucKWle9cIcyVXAJpL27eap1gMul3Qflfu2vglsAbwJmFnoz8PASkl7paJHqCSK1wITCys5/hr4CIWpiBFxL/CFdJ6Fku6gMmpXnIJYdApwqqTpvH60zMzMzMzMrEN1L7UeEedUvf4WlVGk6nrVKxU2F44FlYUwAO6qard1Yf9/C4feWaM729Q47+i0+9HqY4U6fwUG1ii/ltfuR6s+tn/V60eAdxSKvtHR+czMzMzM+qtGXBhjbcteot7MzMzMzMy6zw8dNjMzMzOzHvNIWP2chPWifwzIX0zxlRJ+zF94bv3sGJsPXZEdo2VFOUvZDC9hQHej1vzr+uzAQfn9WJ3/K3nAgKXZMW5rq7muTt3uHpD/s/aBEc9mx1AJY/53f29l15W6MG9Y/vd3wkWXZccA2GflVtkxlgzK/x1ecGX+NXm5dePsGHec92J2jJsGrzHLvUfOOvCk7Bjb3XpJdozfjzk7O8ZOLw3JjvHKyvzP1mG0ZscAeLFtcHaMFcr/t8D6kf+htuOqluwYf10v//d3ZQnXA2BECcvjlfEb3PLM8hKi2LrA0xHNzMzMzMx6kUfCzMzMzMysx/zg3Pp5JMzMzMzMzKwXeSTMzMzMzMx6rK2c2/zXKR4JMzMzMzMz60V9JgmT1CppTmFrkjRW0vdKPMcSSZuVFc/MzMzMzKxefWk64oqIaK4qWwLMrK4oab2IyF9b1czMzMzMsvg5YfXrMyNhtUgaL+l3af8cSZMk3QBcJmmgpG9LmiHpPkmfKbS5VdJvJN0v6YfSmk8JknSNpFmSFkiaWCh/v6TZkuZKuimVrS/pp+lc90r6UCrfVdL0NHJ3n6RRvXJhzMzMzMysYfWlkbBhkuak/cURcWSNOnsB+0fEipQ4vRQRe0saAtyREjSAccAuwGPAdcA/AVdVxfpERLwgaRgwQ9IUKknpj4EDI2KxpE1S3bOAmyPiE5I2AqZLuhH4LHBhRPxS0mBqPOcv9XMiwAc2GceYkTv04NKYmZmZmfVNHgmrX19KwmpNR6w2NSJWpP33AqMlHZVebwiMAlYB0yNiEYCkK4D9WTMJO0VSe6K3TWq7OXBrRCwGiIgXCuc6XNJp6fVQYFvgLuAsSVsDV0fEw9UdjohJwCSAs5uO92MUzMzMzMzWcX0pCeuOlwv7Av4tIq4vVpA0njWfGRc16kwA9o2I5ZKmUUmsVKNt+7k+HBELq8ofkHQP8AHgekmfioib63pHZmZmZma2TunT94R14XrgJEmDACTtKGn9dGycpO3TvWDHALdXtd0QeDElYDsD+6Tyu4CDJG2fYrZPR7we+DdJSuV7pq9vBRZFxPeAqcDoN+KNmpmZmZn1VdEHtkbTyEnY/wL3A7MlzQd+xGsje3cBFwDzgcXAb6raXgesJ+k+4DzgboCI+BuV+7euljQXmJzqnwcMAu5L5zovlR8DzE/3su0MXFb2mzQzMzMzs/6lz0xHjIgRNcqmAdPS/jlVx9qAL6ftVWmwanlEHFMjXlPh5SEd9OOPwB+rylYAn6lR9xvAN2rFMTMzMzMzq6XPJGFmZmZmZtZ42rS2e9B4+l0SVhw9MzMzMzMz62v6XRLWlw0q4a7B7VrXeBRZ3e7RyOwYTwzIfyLE6WPKuY3ymoWLsmOcNXli15W6EDPvzI5x//9blh3j8dXrd12pCwuHrsqOAXDkivz/Gmtpyb919ZH7N8uO8fDgQdkxVpfwJJUH7tw0OwZAawkx/jJgdXaMnd719+wYs27cPD/G4JbsGGWZ/0L+9/j3Y87OjvGvs8/NjrHqwjOyY8Qr+T9nc39ezlOMhpTwO/yHlU9nxzh2cFN2jN8Ny/8bvEnkx1itvrOkwpDI/5s1YGj+v9MakZ8TVr9GXpjDzMzMzMys4TgJMzMzMzMz60WejmhmZmZmZj3WdyaVNg6PhJmZmZmZWb8m6f2SFkp6RNIaN6xKGiJpcjp+j6SmwrEzU/lCSe8roz8eCTMzMzMzsx5r6+NjYZIGAt8H3gM8AcyQNDUi7i9U+yTwYkTsIOlY4JvAMZJ2AY4FdgXeAtwoaceIyFrjqldGwiRtKelySYskzZJ0l6Qje+PcVf3YVdJDkoYVyn6fLnR13fGSXpI0R9J9km6UtEU6dqKki9P+EembY2ZmZmZmfc844JGIWBQRq4ArgQ9V1fkQ8LO0fxVwsCSl8isjYmVELAYeSfGyvOFJWOr8NcCtEfHWiNiLSja5dTfbl7bWZ0QsAK4GzkqxjwAGRcSVVedsHyG8LSKaI2I0MAP4XI2wRwBOwszMzMzM+qatgMcLr59IZTXrREQL8BKwaTfb1q03RsLeDayKiB+2F0TEYxFxkaQmSbdJmp22/eDVUahbJF0OzEtl16RRtAWSXn2ok6RPptGtaZJ+XBih2lzSFEkz0vbO1ORc4GhJzcAFpMRK0jmSJkm6Abis+AZSIjkSeLGqfD/gcODbacTsbSVeNzMzMzOzPq+tD2ySJkqaWdiKD4Gt9RC46jmUHdXpTtu69cY9YbsCszs49izwnoh4RdIo4ApgbDo2DtgtDfsBfCIiXkhTCWdImgIMAb4KjAGWAjcDc1P9C4HvRsTtkrYFrgfeHhHLJZ0G3Ar8T0Q8XOjPXsD+EbFC0njgAElzqGTBLwNfLnY+Iu6UNBX4XURcVesNph+AiQCHbzKOsSN26PxqmZmZmZlZXSJiEjCpg8NPANsUXm8N/LWDOk+kWXEbAi90s23den11REnflzRX0gxgEPBjSfOAX/P6aX3TCwkYwCmS5gJ3U7kQo6gkan+OiBciYnWK0W4CcHFKoqYCG0gaCRAR1wJ/B35Q1b2pEbGi8Lp9OuI2wP8B36r3/UbEpIgYGxFjnYCZmZmZWX8TfWDrwgxglKTtJQ2mcmvU1Ko6U4ET0v5RwM0REan82LR64vZUcpDp3bw0HeqNkbAFwIfbX0TE5yRtBswETgWeAfagkhC+Umj3cvtOGpWaAOybRrKmAUOpPTzYbkCqv6KD4+2jl0Uv16qYTAWmdHLczMzMzMz6mIhokXQylZlxA4GfRsQCSecCMyNiKvAT4OeSHqEyAnZsartA0q+A+4EW4HO5KyNC74yE3QwMlXRSoWx4+roh8FREtAEfo3JRatmQypKRyyXtDOyTyqcDB0naOA0bfrjQ5gbg5PYX6R6wHPsDj9YoX0rlfjEzMzMzM+uDIuIPEbFjRLwtIs5PZWenBIyIeCUijo6IHSJiXEQsKrQ9P7XbKSL+WEZ/3vCRsIiItArhdyV9CfgblRGn06ncKzZF0tHALXQ8EnUd8FlJ9wELqUxJJCKelPR14B4qczPvp7KSCcApwPdTm/Wo3AP22Tq7335PmFLcT9WocyWVKZWnAEdFRK1EzczMzMysX6qeWmZd65WHNUfEU6QhvRpGF/bPTPWnAdMK7VcCh3TQ/vKImJRGwn5DZQSMiHgOOKaTPjVVvT6n6vU0KiNwtdpeClya9u/AS9SbmZmZmVk39UoS9gY7R9IEKveI3UDlmWRmZmZmZtYL2jpbpcFqavgkLCJOW9t9MDMzMzMz666GT8IayaBOF3PsnofWy16MhY9qWXaMRSvy1yIZsNGI7BgAbxuS/bw8Wq6q+Zi3uryysLPFNbtnyzfn/0qufDw/xoYMzo4BMESrs2Ns+taOFjitI8aA/BjLpr85O8bcYfmz5t++//PZMQCevH2r7BgblfEnpCX/93ew8j8Xd2sZmh1j4Xrl/FfwmK2fyY6x00tDsmOsuvCM7BiDP39BdozWv8zPjsHPL8uPAbSW8Hd8p8GbZccYmP9rw6i2QdkxVpSwvNvzJd1NNDzyO/PsgPy+DNpj++wYtm5wEmZmZmZmZj3W1p0nddnr9PrDms3MzMzMzNZlHgkzMzMzM7Me8zhY/TwSZmZmZmZm1ouchJmZmZmZmfWiXk3CJG0p6XJJiyTNknSXpCN7sw9V/TlE0kxJD0h6UNJ31lZfzMzMzMwaUVsf2BpNryVhkkTlQcq3RsRbI2Iv4Fhg6262H1hyf3YDLgY+GhFvB3YDFtXR3vfTmZmZmZlZ3XpzJOzdwKqI+GF7QUQ8FhEXSWqSdJuk2WnbD0DSeEm3SLocmJfKrkmjaAskTWyPJemTkh6SNE3SjyVdnMo3lzRF0oy0vTM1+RJwfkQ8mPrSEhE/SG0+KOkeSfdKulHSlqn8HEmTJN0AXCZpV0nTJc2RdJ+kUW/4VTQzMzMzs4bWm6M5uwKzOzj2LPCeiHglJTJXAGPTsXHAbhGxOL3+RES8IGkYMEPSFGAI8FVgDLAUuBmYm+pfCHw3Im6XtC1wPdA+8vXfHfTndmCfiAhJn6KSsP1HOrYXsH9ErJB0EXBhRPxS0mBgjdG6lChOBDhyk3GMG+E8zczMzMz6Dz8nrH5rbUqdpO8D+wOrgAnAxZKagVZgx0LV6YUEDOCUwn1k2wCjgDcBf46IF1LsXxdiTAB2qcyGBGADSSO76N7WwGRJbwYGA8XzT42IFWn/LuAsSVsDV0fEw9WBImISMAnggu0+6p9QMzMzM7N1XG9OR1xAZaQKgIj4HHAwsDlwKvAMsAeVEbDBhXYvt+9IGk8lqdo3IvYA7gWGAqJjA1L95rRtFRFLU3/26qDNRcDFEbE78Jl0jjX6ExGXA4cDK4DrJb27k36YmZmZmfU70Qe2RtObSdjNwFBJJxXKhqevGwJPRUQb8DFqTOsr1HsxIpZL2hnYJ5VPBw6StHFaMOPDhTY3ACe3v0ijbQDfBr6s/8/encfJUdXrH/88mYQshC3sKBCUTcUQIGwKCAhcUFQUFBAUxGvk/q6CouCGEFBEBeEiiBIVAiiLiCiibCIhgEAIkBUEVBbZl2AgezLz/f1Rp6HS9Mx0d1VmpifPO69+pfr0qe85VV1d06fOqdPS5il9gKTjcuU8nZaP6GyDJL0N+FdE/Bi4FhjVWV4zMzMzMzPowUZYRARwAFlj6TFJk4GLga8B5wNHSLqbbBjhvE7C3AAMlDQd+A5wd4r9NPA94B7gL8CDwJy0zjHAmDRxxoPA0Wmd6cCXgMslPQTMBNZP64wDrpJ0O/BSF5t1MDBT0lRgS+CS+veImZmZmZmtiHr0nrCIeJZsWvpa8r1I30j5JwITc+svAvbrZP3LImJ86gm7hqwHjIh4iayxVKs+1wHX1Uj/A/CHGunjqp6fDpzeSX3MzMzMzPq9Vvydrt7Woz/WvJyNSz1SM8km0vh9L9fHzMzMzMzsTfrNDw5HxFd7uw5mZmZmZisaT1HfuH7TCFtR/IelhWMMX3Vh4RiD569cOMbtP4VdPr2ocJxhKn4Yt788p/tM3Vj0amfzydRPA4qfxNZYeUH3mbrxKRZwRfvqheMsjOL7ZOCIvnGaenVA8W0Z0n2Wbp1673qcvOPzheOs0tFeOEZHCYMpFr1QfBDLfxhUvB5dzbFbp5HtbTzaVvwcvXRR8WNt4aLi+yQWLikco/3JmYVjtG20VeEYO8z8IZO3OqFwnMEDin9uhqj4+9tXvu8OL2EM2nDaeKateKDi70zns8I1IpYU/9zYiqE/DUe0FlNGA8yWjzIaYLZ8lNEAs+WjjAaYLR9lNMBs+SijAWbWivrGJWYzMzMzM2tJfaRztqW4J8zMzMzMzKwHuSfMzMzMzMya5kGljXNPmJmZmZmZWQ/qsUaYpHUlXSbpX5Luk3SXpI/2VPmd1OkPku7qzTqYmZmZmdmKpUcaYZJE9uPJkyLibRGxHXAI8NY61y9j1tDqmKsD2wKrS9qkkzwermlmZmZm1oXoA/9aTU/1hO0JLI6In1USIuKJiDhX0khJt0u6Pz3eAyBpd0m3SroMmJHSfp960WZJGluJJemzkh6RNFHSzyWdl9LXlnS1pHvT4725Oh0I/BG4gqxBWIk1QdJZkm4FfiBpZUkXpvUfkPSRlK9mvc3MzMzMzLrSUz097wLu7+S1F4C9I2KhpM2Ay4Ex6bUdgK0i4rH0/KiImC1pKHCvpKuBwcC3yXq1XgP+CkxL+c8Bzo6IOyRtBNwIvCO9dihwCvA88Fvg9FydNgf2ioh2Sd8D/hoRR6Xes8mS/tJNvc3MzMzMVgiemKNxvTLcTtJPgF2AxcBewHmSRpP94PnmuayTcw0wgGNy95FtCGwGrAfcFhGzU+yrcjH2At6ZjYYEYFVJqwDDgE2BOyIiJC2VtFVEzEz5roqIyo+v7wN8WNJX0/MhwEbAM13UO7+tY4GxAB8dsQM7DN+svp1kZmZmZmb9Uk81wmaRDf8DICL+V9JawBTgy2S9UVuTDY9cmFtvXmVB0u5kjaqdI2K+pIlkDSLRuQEp/4J8oqTPAGsAj6UG2qpkQxJPrC43xT8wIh6uijGui3q/LiLGA+MBvr/x4a03YNXMzMzMzErVU/eE/RUYIul/cmnD0v+rAc9GRAfwKaCzSThWA15JDbAtgZ1S+mTgfZLWSBNpHJhb5ybgC5UnqdcKsqGI+0bEyIgYCVQmCqnlRuCLaXIRJG3TYL3NzMzMzPqtDqLXH62mRxphERHAAWSNpcckTQYuBr4GnA8cIelusiF98zoJcwMwUNJ04DvA3Sn208D3gHuAvwAPAnPSOscAYyRNl/QgcLSkkWTDCe/O1e8x4FVJO9Yo9zvAIGC6pJnpOQ3U28zMzMzM7HU9dk9YRDxL571No3LL30j5JwITc+svAvbrZP3LImJ86gm7hqwHjIh4CTi4Rv631Kjftmnxnqr0BcDna+R/tFa9zczMzMxWJK3XD9X7euzHmpezcZKmAjOBx8h+k8zMzMzMzKzP6Rc/RhwRX+0+l5mZmZmZWe/rF40wMzMzMzPrHa04MUZvcyOsB72m4j9lt36sVDjGX19et3g9WFo4xsxfd/XrAvV756Bh3Wfqxqxbi38UlkTx7XlNxeux8us/cde8DVYq5725e0jxSUOH/2X1wjEGqPgfh9cGFN8nK5cwAvzRO4rvDyjnhzXX7Ci+PdMeXL9wjDltxY+zJSUc8otK+rnSh15Ys3CMoRQ/D0y7tITtufSS4jFKsMPMH5YS54JtTiohyoLus3Rj9oDi783cEo7Xdy4t/jdrpRL+dgJ0lBBm1Sh+Tnv20ueKVwTY1DMN9Hv95Z4wMzMzMzOzluCeMDMzMzMza1o54wBWLO4JMzMzMzMz60HuCTMzMzMzs6aFJ+ZoWKk9YZLOlvSl3PMbJf0i9/xHko4rWMYESQel5YmSHpY0XdLfJZ0nqam71iWNk/Smqe4l7STpHklTJT0kaVxKP1LSiyl9qqS+cfexmZmZmZn1aWUPR/wb8B4ASQOAtYB35V5/D3BnyWUeFhGjgFHAIuAPJce/GBgbEaOBrYDf5F67MiJGp8enSy7XzMzMzMz6obIbYXeSGmFkja+ZwGuS1pA0GHgHMFXSGZJmSpoh6WAAZTpLP0/Sg5L+BKxTq+CIWAycAGwkaeu07uGSJqeeqgsktaX0fSXdL2mapFuqY0n6nKTrJQ1N5T2bymiPiAdL21tmZmZmZi2uow88Wk2p94RFxDOSlkraiKwxdhfwFmBnYA4wHdgfGA1sTdZTdq+kSSl/rfSdgS2AdwPrAg8CF3ZSfrukacCWkhYDBwPvjYglks4HDpN0PfBzYLeIeEzSiHwMSV8A9gEOiIhFks4GHpY0EbgBuDgiFqbsB0vaJS2fExEXNb/3zMzMzMxsRbA8Juao9Ia9BziLrBH2HrJG2N+AXYDLI6IdeF7SbcD2XaTvlkt/RtJfuym/8nN97we2I2vMAQwFXgB2AiZFxGMAETE7t+6ngKfIGmBL0uunSvo1WcPsk8ChwO4p/5UR8YUuKyONBcYC7Ddie7ZZZdNuqm9mZmZm1jo8MUfjlscU9ZX7wt5NNhzxbrLerMr9YJ39pnlXv3Ve1zubhhu+G3goxbs4d8/WFhExLqV3Fm8mMBJ46zKFR/wzIn5K1rDbWtKa9dQnrTs+IsZExBg3wMzMzMzMbHk0wu4kG3I4O91DNRtYnawhdhcwiWwYX5uktcl6uiZ3k35ISl8f2KNWoZIGAacD/46I6cAtwEGS1kmvj5C0carD+yRtUknPhXkA+DxwraQN0usfVOpKAzYD2oH/FN9NZmZmZma2IloewxFnkN3TdVlV2vCIeEnSNWQNsmlkPVInRMRz3aTvmWI8AtxWVd6vJS0CBgN/AT4CEBEPSjoRuCnN1LgE+N+IuDsNEfxdSn8B2LsSLCLuSFPV/0nS3mRDFM+WNB9YSjYbY/sb7TIzMzMzsxVXK06M0dtKb4Sle7dWrUo7MrccwPHpQZ3pNe+7iojdu6nLlcCVNdKvB66vShuXW74RuDE9PaST2BOACV2Vb2ZmZmZmVm159ISZmZmZmdkKoiM8MUejlsc9YWZmZmZmZtYJN8LMzMzMzMx6kIcj9qAhUXwyjzI6e9dcWvz2yWcHFT903jbs1cIxABYuHlI4xvxoKxxjmNqL10PFr4vMGVB8W14eUM6wgi0WF48xaEDx43VBe/HjdZNYVDjG8wMHF44xYo35hWMA3Ddn5cIxXi7hvVlrpQWFY7SVcA5YokGFYwwaUM51zTUGFP/gvNKxUuEYg0u41b69y1+fqbMeA4qfWy/Y5qTCMQA+/8CphWMcM+brhWMMLuH7xEYlnBfbS5ijbGlJ85ytWvww4ZG2pYVjtHesmP0bHozYuBXzSDEzMzMzM+sl7gkzMzMzM7OmdbgvrGHuCTMzMzMzM+tBboSZmZmZmZn1IA9HNDMzMzOzpoWHIzas1J4wSW+V9AdJj0r6p6RzJBWfomnZMsZJelrSVEkzJX24pLhzO0nfQtLEVN5Dksan9N0lzUnpUyX9pYx6mJmZmZlZ/1ZaI0ySgN8Bv4+IzYDNgeHAaWWVkXN2RIwGPg5cKNU3r7ekZnrV6zCOAAAgAElEQVT+flwpLyLeAZybe+32lD46IvZqIraZmZmZma1gyuwJ2xNYGBEXAUREO/Bl4ChJ/y/1kN0g6WFJJ1dWknS4pMmpN+kCSW0pfa6k0yRNk3S3pHWrC4yIh4ClwFqSNpZ0i6Tp6f+NUpwJks6SdCvwA0nDJV0kaUbKe2CuLrXKWx94KlfmjBL3mZmZmZlZS+voA49WU2Yj7F3AffmEiHgVeJLs3rMdgMOA0cDHJY2R9A7gYOC9qWerPeUBWBm4OyK2BiYBn6suUNKOZPv9ReA84JKIGAX8mqwHq2JzYK+I+ArwbWBORLw75f1rN+WdDfxV0vWSvixp9VzcXXPDEb9Va6dIGitpiqQpU+b+o4vdZ2ZmZmZmK4IyJ+YQtX8wu5J+c0S8DCDpd8AuZL1Y2wH3ZqMZGQq8kNZbDFyXlu8D9s7F/LKkw4HXgIMjIiTtDHwsvX4p8MNc/qtSzxzAXsAhlRci4pWuyouIiyTdCOwLfAT4vKStU77bI2L/rnZKRIwHxgN8Z+PDfNeimZmZmfUr/p2wxpXZCJsFHJhPkLQqsCFZD1f1uxNkDbSLI+IbNeItiYjKOu1VdT07Is7spj758ublq1WjLl2WFxHPABeS3X82E9iqm7LNzMzMzMxqKnM44i3AMEmfBkj3dv0ImADMB/aWNELSUOAA4M60zkGS1knrjJC0cZPl/403ergOA+7oJN9NwBcqTySt0VVQSftKGpSW1wPWBJ5uso5mZmZmZraCK60RlnqRPkp2v9ejwCPAQuCbKcsdZMMEpwJXR8SUiHgQOBG4SdJ04GayiTCacQzwmRTnU8CxneT7LrBGmt5+GrBHN3H3ASp5bwSOj4jnmqyjmZmZmVm/En3gX6sp9ceaI+LfwIeq09P9Xi9ExBdqrHMlcGWN9OG55d8Cv03L4zop+3GyGRqr04+sej4XOKKB8o4DjquRfyIwsVZdzMzMzMzMOlNqI8zMzMzMzFYsrThFfG/rkUZYREwguzfMzMzMzMxshaY3JgS05e20EqaoX1JCPQajwjEWqPhx8wyLCscAGNM+pHCM786bWjjGNsNHFo6x7oDi29JWwvu7ZcfgwjEA5pZxnKj4UT+khNtfN2vvGwMH5pR0J+8rau8+UzeGR/HKPKni54FBJby/m3esVDhGWeaX8Lkp4xz950VPFo6xxUprFY4xRG2FY5RlCMXr8uMp3y8c46QxJxaO8RrFzwFbtg8qHGNuSee011S8L2ZwFP/7+U8tLBwD4OLHry5emR70sY0/3OsNit89cW1L7bO+8a3CzMzMzMxakjt1GlfmFPVmZmZmZmbWDfeEmZmZmZlZ0zpacIr43uaeMDMzMzMzsx7kRpiZmZmZmVkPargRJqld0tTc4+vNFCzpcUnFp02qHXukpJlpeXdJcyQ9IOkhSSeXVMZESWPKiGVmZmZm1qo6+sCj1TRzT9iCiBhdek2Wr9sjYn9JKwNTJV0XEfd1t5KkgRGxtAfqZ2ZmZmZmK4jShiOmnq1TJN0vaYakLVP6cEkXpbTpkg6sse5xkmamx5dS2sqS/iRpWko/OKVvJ+k2SfdJulHS+rn0aZLuAv63Vh0jYh5wH/B2SUNy9XpA0h4pzpGSrpL0R+CmlHZCyjdNUv4HPj4uabKkRyTtWta+NDMzMzNrFdEH/rWaZnrChkrK/7Lt6RFxZVp+KSK2lfT/gK8C/w18G5gTEe8GkLRGPpik7YDPADsCAu6RdBvwNuCZiPhgyreapEHAucBHIuLF1DA7DTgKuAj4YkTcJumMWhWXtCawE/AdUkMtIt6dGow3Sdo8Zd0ZGBURsyXtBxwA7BgR8yWNyIUcGBE7SPoAcDKwV40yxwJjAT4yYge2H75p53vWzMzMzMz6vWZ6whZExOjc48rca79L/98HjEzLewE/qWSIiFeq4u0CXBMR8yJiboqxKzAD2EvSDyTtGhFzgC2ArYCbU0PwROCtklYDVo+I21LMS6vK2FXSA2Q9W9+PiFmp3EtTnf4OPAFUGmE3R8TsXP0vioj5Ke/sXNxa27uMiBgfEWMiYowbYGZmZmZmVvbvhC1K/7fnYgu67CNUrcSIeCT1kn0AOF3STcA1wKyI2HmZANLq3ZRxe0TsX0+5ybyqfJ3FrrW9ZmZmZmYrDP9OWON6Yor6m4AvVJ5UD0cEJgEHSBqWJs74KHC7pA2A+RHxK+BMYFvgYWBtSTunWIMkvSsi/gPMkbRLinlYHfWaVMmXhiFulOLXqv9RkoalvCNq5DEzMzMzM6tLGfeE3RARXU1T/13gJ2nK+HbgFN4YxkdE3C9pAjA5Jf0iIh6Q9F/AGZI6gCXA/0TEYkkHAT9OQxAHAv8HzCK7r+xCSfOBG+vYjvOBn0maASwFjoyIRdKyHWQRcYOk0cAUSYuBPwPfrCO+mZmZmVm/F+GesEY13AiLiLZO0kfmlqcAu6flucAR3eQ/Czir6vUbqdGYioipwG410u8Dts4ljUvpE4GJNfIvBI6skT4BmFCV9n3g+1Vpu+eWX6KTe8LMzMzMzMzyemI4opmZmZmZmSWeTMLMzMzMzJrW0dsVaEHyGM6ec8LIQwvv7K6mdKzXJu01R5Q25NUS+lAH9KFDr4z9WsYVjUUlVKSM/frKgHJOp6tF8QNlUAnbU0aM59qK75PBUfwNHlzK0QqLSpjJalgJ21OGeSq+LYtLiFGWlUrYr4NKOE6K/6WAtj6yW2eXdE4r4zO8oIRj7dQp3y0cY9yYEwvHKGN/lHUWGVpCXZaWUJmhJR3zxz75q75xgq3Tf224X69/2m/89/Uttc88HNHMzMzMzKwHeTiimZmZmZk1Lfw7YQ1zT5iZmZmZmVkPck+YmZmZmZk1rcM9YQ1zT5iZmZmZmVkP6hONMElDJE2WNE3SLEmnpPT9JT2Q0h+U9Pkm4z8uaUaKc5Ok9Uqo85GSzisax8zMzMzMVix9ZTjiImDPiJgraRBwh6S/AOOBHSLiKUmDgZEFytgjIl6S9D3gm8Ax9awkqS0i2guUa2ZmZmbWb/knrxrXJ3rCIjM3PR2UHovJGokvpzyLIuJhAEkflzQz9WxNSmlHSvqdpBskPSrph50UNwnYNK1zaOohmynpB5UMkuZKOlXSPcDOkraX9LdU3mRJq6SsG9RRnpmZmZmZ2ev6RCMMsh4nSVOBF4CbI+Ie4FrgCUmXSzpMUqW+JwH/FRFbAx/OhRkNHAy8GzhY0oY1itofmCFpA+AHwJ5pve0lHZDyrAzMjIgdgcnAlcCxqby9gAX1lidprKQpkqZMe+0fzewaMzMzM7M+q4Po9Uer6TONsIhoj4jRwFuBHSRtFRH/DbyfrCH0VeDClP1OYIKkzwFtuTC3RMSciFgIPAhsnHvt1tTIWxU4HdgemBgRL0bEUuDXwG4pbztwdVreAng2Iu5N9Xw15e+uvMp2jY+IMRExZutVNm1295iZmZmZWT/RZxphFRHxH2AisG96PiMizgb2Bg5MaUcDJwIbAlMlrZlWX5QL1c6y97ztERGjI+LTqQx1UY2FufvABJ02r7sqz8zMzMzM+jhJIyTdnG4xulnSGjXyjJZ0V5pEcLqkg3OvTZD0mKSp6TG6uzL7RCNM0tqSVk/LQ8mG/P1d0u65bKOBJ1Ket0fEPRFxEvASWWOsUfcA75O0lqQ24FDgthr5/k5279f2qexVJLmxZWZmZmYGRB/4V9DXyUa4bQbckp5Xmw98OiLeRdZZ9H+V9ktyfOrwGR0RU7srsK80JtYHLk6NoQHAb8gaRFdKuoDsHqx5wJEp/xmSNiPrpboFmEbWSKtbRDwr6RvArSnOnyPiDzXyLU4t3XNTA3EBWSPRzMzMzMxa30eA3dPyxWSj8r6WzxARj+SWn5H0ArA28J9mCuwTjbCImA5sU+OlD3SS/2M1kiekRyXP/rnlkZ3EuQy4rEb68Krn9wI71VuemZmZmdmKoqMPTFEvaSwwNpc0PiLG17n6uhHxLLzeUbNON2XtAKwE/DOXfJqkk0g9aRGxqObKSZ9ohJmZmZmZmTUrNbg6bXSl3yBer8ZL32qkHEnrA5cCR0RER0r+BvAcWcNsPFkv2qldxXEjzMzMzMzM+rWI6PR2IknPS1o/9YKtT/aTWbXyrQr8CTgxIu7OxX42LS6SdBHZrO5dciOsB60WxedBWaDi3b0LupoXsk6DS+h1HlRSz3VH91m69WRbe/eZutHW5YSb9dmwvU/MlcOaS8qpxxMDi7/JG3aUcMCWYM2O4vuk+FEG65QRBHhuYN/Yr/NKOKet2158WxYOKB7j3wPKeXPWK+FY23zx0u4zdeO6ocXfm806BhWOUYa5pfylgI3ai39tmjGw+HszbsyJxWNM+W7hGD/b5qTCMRaXdCoq4TRQyi9NrVn87W1JvT8YsbBrgSOA76f/3zRPhKSVgGuASyLiqqrXKg04AQcAM7srsG984zMzMzMzM+sd3wf2lvQo2c9ifR9A0hhJv0h5PkH2m8JH1piK/teSZgAzgLWAbq9yuCfMzMzMzMya1tHifWER8TLw/hrpU4D/Tsu/An7Vyfp7Nlqme8LMzMzMzMx6kBthZmZmZmZmPcjDEc3MzMzMrGmtPhyxNyzXnjBJ35I0S9L0dPPajsuzvE7qME7S06n8mZI+XFLcuWXEMTMzMzOzFcty6wmTtDOwP7BtRCyStBbZD5h1t97AiCh7gs+zI+JMSe8Abpe0Tu7H1Xq6LmZmZmZm/UaEe8IatTx7wtYHXoqIRQAR8VJEPCNpe0l/kzRN0mRJq0g6UtJVkv4I3AQg6XhJ96ZetFMqQSUdntabKukCSW0pfa6k01LcuyWtW12hiHgIWAqsJWljSbek+LdI2ijFmSDpLEm3Aj+QNFzSRZJmpLwH5urSZXlmZmZmZmbVlmcj7CZgQ0mPSDpf0vvSj5xdCRwbEVsDewELUv6dgSMiYk9J+wCbATsAo4HtJO2WerIOBt4bEaPJfvv0sLT+ysDdKe4k4HPVFUrDITuAF4HzyH5sbRTwa+DHuaybA3tFxFeAbwNzIuLdKe9f6y0vlTlW0hRJU+6d+49G9p+ZmZmZmfVDy204YkTMlbQdsCuwB1nj6zTg2Yi4N+V5FSD7cWlujojZafV90uOB9Hw4WaNsFLAdcG9aZyjwQsqzGLguLd9H9kNrFV+WdDjwGnBwREQaLvmx9PqlwA9z+a+KiPa0vBdwSG67XqmjvPx+GA+MBzht48PcV2tmZmZm/Yon5mjccp0dMTVkJgIT069I/y90+i7Nyy0LOD0iLshnkPRF4OKI+EaN9ZfEGwNS21l2286OiDO7q24XdalV567KMzMzMzMzq2m5DUeUtIWkzXJJo4GHgA0kbZ/yrCKpVuPlRuAoScNTvrdIWge4BTgoLSNphKSNm6zi33ijh+sw4I5O8t0EfCG3XWs0WZ6ZmZmZmdly7b0ZDpwraXWyyTD+AYwFLkrpQ8nuB9uresWIuCnd/3VXGnY4Fzg8Ih6UdCJwk6QBwBKy3rUnmqjfMcCFko4nu0fsM53k+y7wE0kzyXq8TgF+10R5ZmZmZmb9Tng4YsOW5z1h9wHvqfHSS8BOVWkT0iO//jnAOTXiXkl2f1l1+vDc8m+B36blcZ3U73FgzxrpR1Y9nwscUW95ZmZmZmZmXfF9TGZmZmZm1jT/TljjlucU9WZmZmZmZlbFPWE9aLUOFY4xYEDxGNssWlQ4xqODBheOAbCk+ObwyoDiV19Wi75xPWJOCdXYbHE5V6P+Paj4m7NIxesyvL37PN0p493toPj+KON4nzsANl5cfKfMH9BWOMarJezYNUo4L84pvims2lE8xqbtbTxXwvloaAkf4WcGFv/zPqKEK9sLSjhGhpfw3mzRPpC2EvZrewmf4S3bBxWOMbuE4+xn25xUOMbRD5xaOAbAOdsWr8scFT9QFlA8xno155szezMfKdZryvhCastHGQ0wWz7KaIDZ8lFGA8yWjzIaYLZ8lNEAs97n3wlrXN+4/G9mZmZmZraCcE+YmZmZmZk1zRNzNM49YWZmZmZmZj3IjTAzMzMzM7Me1BKNMEntkqZKminpKknDmowzt+r5lyUtlLRaOTU1MzMzM1uxdBC9/mg1LdEIAxZExOiI2ApYDBxdUtxDgXuBj9Z6UfI8o2ZmZmZmVq5WaYTl3Q5sCiDpuNQ7NlPSlyoZOkvPk/R2YDhwIlljrJJ+ZOpt+yNwU0o7XtK9kqZLOiWX9/eS7pM0S9LY5bK1ZmZmZmZ9WPSBf62mpXp6Us/UfsANkrYDPgPsCAi4R9JtZA3LN6VHxANV4Q4FLidr1G0haZ2IeCG9tjMwKiJmS9oH2AzYIcW7VtJuETEJOCrlGQrcK+nqiHh5Oe4CMzMzMzNrca3SEzZU0lRgCvAk8EtgF+CaiJgXEXOB3wG7dpFe7RDgiojoSHk+nnvt5oiYnZb3SY8HgPuBLckaZQDHSJoG3A1smEt/naSxkqZImnLn3Eeb3wNmZmZmZtYvtEpP2IKIGJ1PkKRO8naWnl93FFmD6eYUZiXgX8BPUpZ5VfFOj4gLqmLsDuwF7BwR8yVNBIZUlxUR44HxAOdteHjr9ZWamZmZmXWhw78T1rBW6QmrZRJwgKRhklYmm1zj9i7S8w4FxkXEyPTYAHiLpI1rlHMjcJSk4QCS3iJpHWA14JXUANsS2Gm5bKWZmZmZmfUrrdIT9iYRcb+kCcDklPSLyn1fnaXnHEJ2b1neNSn9+apybpL0DuCu1Gs2FzgcuAE4WtJ04GGyIYlmZmZmZiuUVpwYo7e1RCMsIoZ3kn4WcFYD6cPT/5vUeO243NMJVa+dA5xTowrVDTkzMzMzM7MutfJwRDMzMzMzs5bTEj1hZmZmZmbWN3lijsa5J8zMzMzMzKwHuSesB80e0DeuEtw5ZKXCMYaVsCkvDegoHgTYsL34tYQn2orXZWh0++sI3Zqv4vV4eKXi9aCkG2zbSogxa3AJQUpQxjG/pIT9+vKQcq6dLSrhWFupjGO+hM0ZVDwErwwovi3rdJTx2YNXStgni1T8WFtSQoyXKX6cvdpWfL+WcawCLC0hzLAS6lLG1iwuIcg5255UOMax959avCLA6dt9u3CMYSX81XpsUN/4rmd9nxthZmZmZmbWNM+O2DgPRzQzMzMzM+tB7gkzMzMzM7OmeWKOxrknzMzMzMzMrAe1dCNMUki6NPd8oKQXJV2Xnn9Y0tcbjDlO0ulVaaMlPdTNehMljWmkLDMzMzMzW/G0dCMMmAdsJWloer438HTlxYi4NiK+32DMy4GDq9IOAS5rupZmZmZmZv1U9IF/rabVG2EA1wMfTMuHkjWiAJB0pKTz0vLHJc2UNE3SpJTWJulMSTMkTZf0xYh4GPiPpB1zZXwCuCKt81NJUyTNknRKT2ygmZmZmZn1H/1hYo4rgJPSEMRRwIXArjXynQT8V0Q8LWn1lDYW2ATYJiKWShqR0i8n6/26R9JOwMsR8Wh67VsRMVtSG3CLpFERMX05bZuZmZmZWZ/miTka1/I9YakBNJKsF+zPXWS9E5gg6XO88RuyewE/i4ilKdbslH4FcJCkAWSNsctzcT4h6X7gAeBdwDu7qp+ksannbMqUuf9oaNvMzMzMzKz/aflGWHItcCbLNpaWERFHAycCGwJTJa1J9qPzb2q6R8S/gceB9wEHAr8BkLQJ8FXg/RExCvgTMKSrikXE+IgYExFjxgzftPEtMzMzMzOzfqW/NMIuBE6NiBmdZZD09oi4JyJOAl4ia4zdBBwtaWDKMyK3yuXA2cA/I+KplLYq2WQgcyStC+xX/qaYmZmZmbWO3p6UwxNz9JKIeCoizukm2xlpAo6ZwCRgGvAL4ElguqRpwCdz+a8iG254Ra6caWTDEGeRNfzuLG8rzMzMzMxsRdDSE3NExPAaaROBiWl5AjAhLX+sRoilwHHpUR3nRWBQjfQjO6nL7vXV2szMzMys/4jo6O0qtJx+0RNmZmZmZmbWKtwIMzMzMzMz60EtPRzRzMzMzMx6V0cLTozR29wI60FDUOEY80s4yAeVUI+5Kl6PDdvL6Yh9cUDxuqwaxevS1n2W7pVwDltSPERp1ugovl+XFD9cGdRH/jbMLeFYXbekz83zbcXrsnIUf3MGl/DezC5hvw4voR7zSzhWoZxzyfAS3psyDCvh3NpeQj06Stodq5ZQmX+3Fb93poxza3sJ+2SOim/L6dt9u3hFgG/c953CMY7Y7iuFY+zYsXLhGLZicCPMzMzMzMyaFtFHrna2EN8TZmZmZmZm1oPcCDMzMzMzM+tBHo5oZmZmZmZN88QcjXNPmJmZmZmZWQ/qF40wSSHp0tzzgZJelHRdN+utK+k6SdMkPSjpz93kHylpZievTZQ0prktMDMzMzNrTRHR649W01+GI84DtpI0NCIWAHsDT9ex3qnAzRFxDoCkUcuxjmZmZmZmZv2jJyy5HvhgWj4UuLzygqQRkn4vabqku3ONrfWBpyr5ImJ6yi9JZ0iaKWmGpIOrC5M0VNIVKeaVwNDltWFmZmZmZtZ/9KdG2BXAIZKGAKOAe3KvnQI8EBGjgG8Cl6T0nwC/lHSrpG9J2iClfwwYDWwN7AWcIWn9qvL+B5ifYp4GbFerUpLGSpoiaco9cx8tvpVmZmZmZn1IR0SvP1pNv2mEpV6skWS9YNX3du0CXJry/RVYU9JqEXEj8Dbg58CWwAOS1k75L4+I9oh4HrgN2L4q5m7Ar3JlT++kXuMjYkxEjNlx+GbFN9TMzMzMzFpav2mEJdcCZ5IbipioRt4AiIjZEXFZRHwKuJescVUrfy2t1+w2MzMzM7Ne1d8aYRcCp0bEjKr0ScBhAJJ2B16KiFcl7SlpWEpfBXg78GTKf7CkttQzthswuYuYW5ENgTQzMzMzW6FEH/jXavrL7IgARMRTwDk1XhoHXCRpOjAfOCKlbwecJ2kpWYP0FxFxr6QpwM7ANLLerhMi4jlJI3Mxf5qLOZU3N9LMzMzMzMzepF80wiJieI20icDEtDwb+EiNPGcAZ9RID+D49MinPw5slZYXAIcUrbuZmZmZWStrxd/p6m39bTiimZmZmZlZn+ZGmJmZmZmZWQ/qF8MRW8WiEm4a7Kh33saulNBj3F48BE+1dZQQBdbuKH4t4RUV3ymrRAlvTgkhhpQQZFBJowpeGFD8SBkaxd/fhSXs1yUlHCNleKakz83G7cX367/air+/Q0q4FjiwhLfmuQHF9+taJZyLAF4ooS5tJdRjcAnntL6yLauWcB4BeKRtaeEYq0fxLVpawjmtjDPaAoq/v8NKeYfhiO2+UjjGxff9qHCMcWNOLByjFXW04MQYvc09YWZmZmZmZj3IPWFmZmZmZtY0T8zROPeEmZmZmZmZ9SA3wszMzMzMzHqQhyOamZmZmVnTOjwcsWH9ridMmTsk7ZdL+4SkG2rkPUrSDEnTJc2U9KYfdK7KP0HSQTXSd5d0XTlbYGZmZmZm/Vm/6wmLiJB0NHCVpFvJZrc9Ddi3kkeSgA2BbwHbRsQcScOBtXujzmZmZmZmrcoTczSu3zXCACJipqQ/Al8DVgYuAdolPQTcCuwMfAl4DZib1plbWZY0GvgZMAz4J3BURLySL0PSvsD/AS8B9/fAZpmZmZmZWT/Q74Yj5pwCfBLYD/hhStsCuCQitgHuAJ4HHpN0kaQP5da9BPhaRIwCZgAn5wNLGgL8HPgQsCuwXmeVkDRW0hRJU6bM/Uc5W2ZmZmZmZi2r3zbCImIecCVwaUQsSslPRMTd6fV2siGKBwGPAGdLGidpNWD1iLgtrXMxsFtV+C2BxyLi0cj6X3/VRT3GR8SYiBgzZvimpW2fmZmZmVlf0EH0+qPV9NtGWNKRHhXz8i9GZnJEnA4cAhzYQOzWe7fNzMzMzKzX9fdGWKckbSBp21zSaLKesjnAK5J2TemfAm6rWv3vwCaS3p6eH7p8a2tmZmZm1jdFRK8/Wk2/nJijToOAMyVtACwEXgSOTq8dAfxM0jDgX8Bn8itGxEJJY4E/SXqJ7P6yrXqs5mZmZmZm1rL6dSMsIsbllh8n11CKiCeAPTtZbyqwU430I3PLN5DdG2ZmZmZmZla3ft0IMzMzMzOz5aujBYcD9rYV9p4wMzMzMzOz3uCesB60RMVjzGZp4RjHr/ly4Rgvv7hy4RjvGP/+wjEAvvY/dxaOcdq+cwrHiCXthWN0zC/+/s5/onAIxj+9QfEgwAcXFt+e7b4wuHhFOopfoXv68tmFY1yyYEThGCedslHhGAD3f6347xY+01b8vTnhoLmFYzx2dUf3mbrx5PzhhWNcMWR+4RgA5++/sHCMpc8Xr8uAIW2FYwzaepPCMWLJksIxnr30ucIxANo7il+7/t7CYYVjbNsxtHCMNYufnllPxb9GPjaonB6UHTuKfy8ZN+bE4jGmfLdwjFYUnjS8Ye4JMzMzMzMz60FuhJmZmZmZmfUgD0c0MzMzM7OmeWKOxrknzMzMzMzMrAe5EWZmZmZmZtaD+nwjTNK3JM2SNF3SVEk7dpF3gqSDuok3QdJjKdb9knbuJN/Rkj5dtP5mZmZmZv1ZRPT6o9X06XvCUgNpf2DbiFgkaS1gpRJCHx8Rv5W0D3ABMKqq3IER8bMSyjEzMzMzM1tGn26EAesDL0XEIoCIeAlA0knAh4ChwN+Az0dVE1jSdsBZwHDgJeDIiHi2Kv4kYNOUf2KK9V7gWkmrAHMj4kxJmwI/A9YG2oGPR8Q/JR0PfAIYDFwTESeXvP1mZmZmZn2afyescX19OOJNwIaSHpF0vqT3pfTzImL7iNiKrCG2f34lSYOAc4GDImI74ELgtBrxPwTMyD1fPSLeFxE/qsr3a+AnEbE18B7g2dSLthmwAzAa2E7SbtUFSBoraYqkKfe/VvzHUc3MzMzMrLX16Z6wiJiberR2BfYArpT0deA1SScAw4ARwCzgj7lVtwC2Am6WBGbHQIgAACAASURBVNAG5HvBzpB0IvAi8Nlc+pXVdUg9Ym+JiGtSnRam9H2AfYAHUtbhZI2ySVXbMB4YD3DSyMN8mcDMzMzMbAXXpxthABHRDkwEJkqaAXye7B6uMRHxb0njgCFVqwmYFRE1J90g3RNWI31ejTR1EkPA6RFxQTebYGZmZmbWb7XixBi9rU8PR5S0haTNckmjgYfT8kuShgO1ZkN8GFi7MvOhpEGS3tVMHSLiVeApSQekWIMlDQNuBI5KdUDSWySt00wZZmZmZma24ujrPWHDgXMlrQ4sBf4BjAX+Q3Yv1+PAvdUrRcTiNFX9jyWtRrad/0c2bLEZnwIukHQqsIRsYo6bJL0DuCsNeZwLHA680GQZZmZmZmYtxz1hjevTjbCIuI9sIoxqJ6ZHdf4jc8tTgTdNlJHPU5W+e9XzcbnlR4E9a6xzDnBO7dqbmZmZmZm9WZ8ejmhmZmZmZtbf9OmeMDMzMzMz69s8GLFx7gkzMzMzMzPrSRHhRx96AGMdo9wYfakujtF36+IYfbcujtF36+IYfbcujtF361LW9vjR2g/3hPU9Yx2j9BhlxXGM8mOUFccxyo9RVhzHKD9GWXEco/wYZcVxjPJjlBWnr8SwFudGmJmZmZmZWQ9yI8zMzMzMzKwHuRHW94x3jNJjlBXHMcqPUVYcxyg/RllxHKP8GGXFcYzyY5QVxzHKj1FWnL4Sw1qcIjyppJmZmZmZWU9xT5iZmZmZmVkPciPMzMzMzMysB7kRZtYJSQPrSTMzMzMza4S/UJp1bjKwbR1pbyJp1a5ej4hXC9RrhSXp+ojYLy2fEBE/7MW67BQRdxeMsVFEPFlWnazvkdQGHBMRZzex7itApzduR8SIInVrhqRNIuKx7tLMWp2kP9L15+/DPVgd64fcCOtFkj7W1esR8bsGYr0XmBoR8yQdTtZQOCcinmgghoDDgLdFxKmSNgLWi4jJDcRYG/ga8E5gSCU9IvasY93XqH3CUxYiumzYpBjHdfV6RJxVR4x1gPWBoZLencoHWBUY1t36ySyybRGwAfBaWh4OPA1sVGecSp2a3q/dxB0eEXOLxGiwvI9VjmtJa0TEKw2GWC+3fAjQa40w4HxSg1zSXRGxcxMxfp+LcXVEHFikQpI+CLyLZY+RUxuM8V5gHLAx2d+IyufvbQ3GaQPWJfd3ptEGp6S35OpRiTGpgfUHAwcCI6ti1LVPJA0ApkfEVvWWWS0i2iV9BGi4EQasRbb/TwZeBC5Nzw+j/nPRMiS9HXgqIhZJ2h0YBVwSEf+pM8TVvPlC1G+B7Xq4HkjaCTgXeAewEtAGzKvzb8WEiDgyLR8RERc3Uv+03k0RsU9a/kZEnN5ojKp4ZX32in5u1gY+x5s/N0c1WI81gM1Y9nzUbT0kdXmhMyLur7P8onHOTP9/jOxvz6/S80OBx+upQ4067QJsFhEXpf083BcwVlxuhPWuD6X/1wHeA/w1Pd8DmAjU3QgDfgpsLWlr4ATgl8AlwPsaiHE+0AHsCZxK1nC4Gti+gRi/Bq4EPggcDRxB9uWhWxGxSgPldKYSYwuyel+bnn8IqPeP0AeBo4C3ku2TiteAb9cTICI2BJB0PnBDRFybnn8I2K3OeuQ1vV+78SB1NAhTY/TnwFuA64GvVRpQkiZHxA51lncibxzXt1BHr2KVUqZzlfS9iPhmWt47Im5uJkxueUinueqP0dAXrTcFkn5G9sV8D+AXwEFkPbeN+iXwZeA+oL3JunyRrOHwPNk5BbL3blQDMX4AHEx2jFbqEdT/OQb4AzCHbFsWNbBeVlhEh6RpJfRY3inpPLLP8Lxc/C6/BEZEO4CkfSJix9xL50q6G/hBE3W5GhgjaVOy9/pa4DLgA12tJGlLsgb+alUXEFelueO/qXpUOY/sYsxVwBjg08Cmda67dW75WKDhRhiwdm7540ChRhjlfPbK+tzcDvylQD3+m2y/vhWYCuwE3EX2/aI7P+ritagzRj7OELLjYxrZOXcUcA+wS1crR8RtAJK+ExH5v9t/lNTI/iTFOTnVYwvgImAQWcPuvY3Gsv7BjbBeFBGfAZB0HfDOiHg2PV8f+EmD4ZZGRKQrrudExC8lHdFgjB0jYltJD6T6vSJppQZjrJnKPjadwG6TdFuDMYDXe6TyV9C6/RIUEaekdW8Cto2I19LzcWR/qLsVERcBF0n6RET8pomq5+0QEf8vF/uP6UTcqKb3axe9g5WeuXr8lOwK7d3AfwN3SPpwRPyT7A9JvdTJcr3eJul3ad3K8usiosve5Zx9gW+m5R8AzTTCBqQrvQNyy69vU0TMriNGdLLcjPdExChJ0yPiFEk/orELORVzIuL6gnU5FtgiIl4uEOOAFKPhxlPOWyNi3wLrQ9YrPkvSZJZtQDUyFOk96f98D1wjXyZD0sHAb9J5/uAGyq7WERFLJX0U+L+IOLdyzu/GFsD+wOq8cQERsotTn+vBeiwjIv4hqS01WC+S9Ld6V220rOUUI6+Mz14Zn5thEfG1gvU4luxC6N0RsUdqxJ9Sz4oRsUfBspeJI+kKYGxEzEjPtwK+2kCotSW9LSL+ldbfhGUb4PX6KLANcH+q3zOSyrj4bC3KjbC+YWSlAZY8D2zeYIzXJH0DOBzYLQ0FauTLMcCStF7A60MSOrpe5c0x0v/PpqFRz5BdCaubpA+TXcHaAHiBbFjFQ2RXYeu1EbA493wx2dCKeso/ptZyRUT8uIF6zJb0dbKrXUH2/jQ6BA+K7dfvAWcAS2u8Vu/kPMMj4oa0fKak+4AbJH2Kxr6IDJW0TSp3SFrON1y6Gx6SH653XgPlLg+rkV2xrtQ/X/egvp6trSW9mmIMzS1DnUNwcxak/+dL2gB4Gdik3pVzQ3dulXQGWQPu9S9y9Q4BSv5N1gNVxL/IzmFFvkz+TdK7K1++mlTXF8eulPCl8pNkw+5+KqmD7GLIYU3GWiLpULLe9Epjqtu/FRHxB+APknaOiLuaLLtwParMTxcKp0r6IfAssHKd675V0o/JPm+V5ddFxJvO/TW8TdK1vHFR6Nr8i/U21Ev+7JXxublO0gci4s8FYiyMiIWSkDQ4Iv4uaYtGg6QGU/Uw/EsaDLNl/hwQETMljW5g/S8DEyX9Kz0fCXy+wToALE4XUSrfseo9Vq2fciOsb5go6UbgcrIvb4cAtzYY42CyP9SfjYjnlN3PdUaDMX4MXAOsI+k0suFMJzYY47uSVgO+QvalYVWyE1gjvkM2dOEvEbGNpD3IxmA34lJgsqRryPbpR8mGZ9ajmStcnfkk2Ze4ytXNSTS+LVBsv94P/D4i7qt+IQ0ZqYckrRYRcwAi4lZJB5INKWpkcoDngLNqLEMdPQMRcUtVpQaS3Q/yTIO9LuukHkLllvPldHvvYESMbKC8zmK0FY2Rc52k1ck+9/eT7c9fNLB+9RCgMbnlunptcvvxX2TntT+x7JfJeu7JPDeVN5/sy/UtVTG6/XIsaUaKMRD4TPrytIg37rGpe1hkZUhSMyS9lewi2x3p+XG80ft8WUT8o44YbcD+EfHBZutR5TNkQ5pPi4jH0lX9X3WzTv59ITWellFno6VwPap8iuyCzhfIzocbsuyFmq4cn1ue0mC5FR/JLZ/Zaa7ulfHZK+NzU7kvW8A3JS0iuwBY933ZOU+l89HvgZuVTTLzTAPrV4bv7U7WCPszsB9wB/X/La94SNIvWPZi6EP1rhwRN0jaDNgyJf29yZ7G30i6AFhd0ufIbnv4eRNxrJ9QRNm96dYMZWPsd01PJ0XENQ2uvzLZlad2SZuTnSyuj4gl3axaHWdL4P1kJ91bIqLuE1VZJE2JiDGSpgHbpPsyGrnvqBJnO94Y8z0pIhoe6tIfpKuPL0fESzVeWzcinq8jxieBf0XVbICpsf/tiGhmOFLDJP0EOD8iZimbgfJvZDfjrw4cW+/w0e6GhFaGtXYTY2PgP5WGabpYcADZDds/iYjFXaxeiTEMWFL5nKb36gPA442eA6riDgaGVOrW4LqvD7vpKq2TdbvarxF1TIihrodRRz1XwdN701WQbicskvRZYEREnJGeP0V28UPACRHx0zpiXA78OiKuS88fBsaT3bu3ZUTU1Zsl6baIaOT+3u7iDQU2ioiHG1iny+Ht0cDEFqlheXFEHF7vOl3Eanhbuoi1BtlnuqkvRpIGAVsBT0fEC0Xr02DZpb0/ZZP0PrKRAzfUc17MrTeD7N69ByJia0nrAr+IiA91s2p1nCHA//DG/diTgJ9GxMJu1itt8rRczL2BfcjOIzdGc/cjWz/hRlg/kYaH7QqsQTZUZQowv94/8ilGrR6N1xppyKUG4E+BdSNiK0mjgA9HxHcbiPEXsi+zp5PNDvYCsH1EvKfLFd8cp6nZ2SR9JSJ+JOlsagy1i4guZ2BMMSo9cDVF/fcuVeI1vV8lDYyIWkMRGym/cIwUZ3vg3xHxXHr+abIr108A46Kb+6gkzYqId6XlY4H3R8SH0/C76yKi0Yk+mibpHuCjaVz/aLKb2E8nu+l7SUR028uo7Obuz0bEo8omKJhMNgnLO4F7I+LrDdRnGFlP6UYR8bl05XaLSgOggTj3V+9HSfdFRN2z30n6eERc1V1aNzGOjYhzukvrJsalEfGp7tI6WfdeYN9KD6ukB1LP/BDgplj2Rv3OYiyzLysx0vLtEbFr52svE+e7ZJMOXcGy96VNr2f9qlgfIuu1WSkiNknH7qn1Dp0rSxr98aFGvpTXiNH0tkg6ieweu7+nixbXA6PJhm1/MiL+UkeMnwHnpotCq5FNPNFONjrgqxFxeYPb8z3gh5FmiEyNwq9ERN0jUvIXZNPzNmBwRMxvIMZHgb/mLjCtDuweEb+vf2tABWcCrFx8Td9v9iC7/3Bm5W/A8ibpoi5ejmh8tshNgGcrjb90AWHdiHi8+VpaS4sIP3rpQXZCebXG4zXg1QZj3Z/+/yLZVVrIpqxvJMbjZH9AXiK7n6QdeIpsaNN2dca4DdiB7MpVJW1mg/VYmax3YyDZ/QLHkE1M0UiML6btmAVMB2aQTTVdz7oHpP8/W+tRZ4z3p8ePyaZv/mh6/AY4vYljpen9Wjk20vK5TR6rhWNU4pD1LkB2VfIZskbYd4Df1rF+fvuvA46s9VodcT5H9uUAsiuSF5LdwzSdrPe1nhjTc8tnkn15gmx4VL3H2ozc8nfIetAgm257Rj0xcutfSTYz6sz0fGgj5wCy3vMDgX+STclceRwJzGr2eOkqrYkYdb/HtWKk88qDda57X9Xzb+aW760zxoNVz0d09lo3cW6v8ZjUyL7IbxdZr0T+s9TtsUZ2QexksvPxcLKLQjPJZtLbtIl6XADcSzbj7HGVRwnbUu9nbxZvXIgeS3YLQBvZ8ObJ9cbILX+JbNg3ZNOZN3SspvXetE4Tn5u7yRo7lefDgb81GONN540mPnsnA38EHknPNwDubDDG+WSjHI4GHgUeAC5qYP0ZZOf0mo9G35+iD7KL4yvlnq9U77nEj/758D1hvSjKmZK9QpJ2JrtZ+7MprdH7TW4AromIG1PAfchmkfsN2clwxy7WrRgWEZOlZSa+a6gHJSLm5Z42O4Si6dnZIl3ti4hfNlk2ke5dknRy5K6YS/o9WYOqUUX2a36lZqfCLSMGQFu80dt1MDA+Iq4GrpY0tY7150jal6zxtgtpVrZ0tXdoA/U4FpiQlg8lG/LyNrKZq37MG0ODu5LfJ3sC34DXpzWvtx753tI9SfdxRsRiZRMwNOLtEXGw0v06EbFADVSEEma/k7Qf2XDKt2jZiQ5Wpc7jNdX/k8AmWnaig1XILg7VE+MbZLNfViY7gez9Wkw2HLAeq+WfRMT3UuwBwJp1xnhN0uYR8UiKMTvF2BKo+/f5os4eszotjYg5VYdGPUNiLiP7ErkZWY/tRcA5ZJ+VX5Ddu9OIZ/5/e+cdJ0lVffHvYYmCJAFBAUGSIJKRKBKNKCBJQEFMGAEDqOBPgiCKihgQQRFMiCCSDOSck2RQFFHMCQQJwsL5/XFf7dT09sy8V107uzPU+Xz2s101/W6/rq7w7r3nnpv+zcZQa5FS9PsuuXjSdvW9Xw2c4sge3a2oNc2yUXu9FUmB11GX3WROUxQiFv+DaZmSuQptzO1a70fb/01Z8hL0E2wqXS8OrAToIWXhb0g6F5jfZdnfrUs+bySkLOdBDNEZLyMyrqV079ldy/ym+3ypAnWHSYTOCZs82IdYBJ7hoEa8mHJxj3Vsv6fasH2+op/ShxNdIwf/VDThrAq4dyAUq7Kh4U2b5ySUnrIacNYwsDqbpAvoT0d8VYGZxSQt4yG6wdI0E/4Y5LjOSlLMU2rUxi2ICHSFnPvRewhVxMUJmk51DLYkggi5mOohmu3WRJPYfwEXKlTWcnCxpFMJgZGFSH3+FC0mcilWt0n6AtHAe3ng/GRjwczxdTyZFm3VObIcBQppbkf97s/EQv2NRJaiwiPkC8lcTZzbizBcsOARIoI9JhxNc4+QdITtT2R+bi/Ol3SYp6eCHUr6nTJwECGYcjhD6plrEw7iPmMNTjTbF1W/h0KttRL2OMUZdXp9cIeixnNKoqzuTRzzsfB82wckx/73TrVywD2S3l86CWfUXWag6XcB+J9Cee9vBNWtLlme67Q8JGlr4vrdiBQATU5cSVCowveBixINzoRwQ2kg8lFJazkpKipqox8fY0wvbpR0FNEqxwSzZDphpzHQWAlQ0l0ELfsURxsU3ICy51rtp6KerOp5er3Lava+TWR9d0rbbyWCEEVlBcA/FK1dqr6h2xCMnQ7PUnQ1YR2mQdFb6yKi7gAiU7EVkQ27wRn1Nsn5O57oi/Mg8DtgN2cUwo9ic1ui39YBY755aMwJRGS/WJ2tZqOe+ZuboGr9z/Z+IwzpZ+P1wDeAqmh8BeC9LpT+HeS4SnoM+A2RCVguvSZt2xlKcW3YSHYOJDIl/yQc0rXSg3p5olA/K8vWz1GQtL57hENGGX8z0fj6QaIebXPbd6a/3W175QwbIq6RxYHTbP8p7V8TWKzKKI9hYx5iMb4E8G3bt6b9GxKZre/lfJ80ZitCzXQVwknYiKBrXpprI9mZm1hMvpThstDZ9Q+S5nChKNCMQqqrWYHh32XMRqtp0fgtYuF2a9q9OuFkvrOebRjDzqoETbSqY7kD+LztOzLG/gD4UW3R9muioe9ziPOjWNgiZUUOJMQBAM4DDvPYIgXT6ts0fa3bdHWEGfNYlKHjUv9tcnunNf4uaex6hIOzKNGn7NNp/+uAt9oeU8VWUav7FeIecLTtk9L+VwOvsv2R3O9Ss/kaIqgkovZwzPtIz/h1CGpypUS4BLCz+6jjjmJjXoImumXadT6hYvnoyKOms/FR4rrbiqiVfTuhCPrVjLGrEyrROxHPih8S9XtF6oo1ezsRLINLieP6CmA/2z/OHH+L7TXG2pdhZznCuXxBmscDwO7OUEntMDnROWGTBC090CrO/8bEDeJKQl79P0Sx/6g3ikTT2cH2qekmPptTs+RBIela2+sXvL+vStug0Vc1UClLC+1V0uZdRITw6YLxAx1XtaMUN7CNZGdZQixlCWKB8WjavyJRx5DVD6ffok8F4hEpen0cQdk9x0ndUaHitb8z5cAVNMjzbG855ptnIJJDuCQhT70+cf1e6z6KmBm2TgPuISiBhxIU57ttj5m5qdlYgVh49fb3yemdVtlYn2jHsDKREZ9CYUZc0YJhH+LY3EIcm2sK74svZsiBuquKzJdA0ppuoM7ax9lpJOzRBiQ9RKjKVYvYypEVsLHthQrtnU84Cx8lMtx7AP9wZpPgdO19tiQoNoKduXudNkkLO6/Zemto416SnhXrE7V2KxG/zT0lAZG2jmuyNbASYLoP7EwEQX8D/NB2kay7Qml5qyr7ldZLF9pePXP8NYTTVrWa2Aj4gu0NSuZRszcfsf5uZX3UYeKic8ImCQZ9oLU4j8udoRo2ho16in82omfKK5vc8BQcdOdGrXvG1hd7sxE0omNtlzbSruxtQixst7W9eOHYgY9rzdbzCG77H0qio23YqBwlSRfZ3qLB574c2IA4z+t98OYHdsrNyCVbcwLr2b6itm9e4r6Yfb4o6pbe6gZy8DUbGwEHE43JZ2cow1jitBQpGI5ip1IBvM32agrZ7fMKHZcriYDOl4j6sj2J4zpqa4AeGzcS0fDTiHvA7oQAxIEFNm4nMlnX2l5DUYt1iO2dC2ycRdxbzyrJBPTYuIQIPJxGUKzuzBx3l+1VatuL2v5Hep2Vse1j8wJgRw9X4DvF9qvHGDdq8MmF/dRq94Lbquu2NMgl6eKS83IEGz8DtnFSf1XQiX9aci2lRf27iCa+dTXeUvW8Nu4l1zR1Dmo2BjquMyI4JWlT4n6yiu2iOjlJt9t+WW17NuDW+r4xxq9O9CZbgLg3/5tgGdw66sCh8W+x/X319KOs4AKGTofJha4mbPLgebZPUEg4XwZcJqn0oThwNo1oyvhRYtFSl1IuiSrWRQGmEqqN2/R/a38kCtD3SI2EJf2TSPtnLX4S7mSoceVUggJY1A9LwcfflYjiLUrULJQ2wIYBjquknwIft31HWmDcTFCqlpN0vO2jx8NGwmwpS7livwdSxsNoXqJWaHaG19Y9AuyYOYfqs55U1H9tUNvXZJH9BHB7WtzWf5uS5rUnEDVTNxGqpE1wraR1bd/QcHyFKmr+ULqO/kosLkswj+2LJCllSQ+WdAXhmGXD9m8kTUmZ4xMl5db7VHjC9hOSUAge3KPoxVaCo4hI/BGSrieuwZ/2Zk9Gg+3NJC1O0KuOTwGeH3nsFhP/lbR8xUKoOWArUjvXCrFI5YAlmw9KWizjO1ymFvt7MXSe/UVB2/4zkbEswS+T43Iaw6+9kv5NZwI/VjSfXwo4m+H1YTk4i1CsvJDm1y+0cy85P32Xn7h5lH2g4+roV/qYpAUGdCjXJYSTtifWAcenOZXiXEVLhKplwM5E8+csJGdr9Sowa/vhMYb0oqqHa1OMrcMkQOeETR608UD7AbHA2JpaNq3QRhX5qxdqm1Cey4LtPQs/sx+OJ+SOL4FpUbRvEjVVufNYqumHSzqEuNH/jbjxr0sUAzdVXBzkuC7rofqTPYELbO+esoRXATkOVBs2IDIb2xL3nuIHUvo9L5F0opuJEvSijQXLz9K/QfAf278Y0MZmwF6Sfk8snIrq9Wo4PmVH/o9YkM6XXpfgiRRtvlfSBwjhgjEX+j14LGUrb0nO8l8YWszk4o8KkZMziUDGgwzVymShFtSaQihYvoso1C8RCsLRG+8rKSu2P/ApYCwn7GBC2OPTDBf2qGTdm+AZSUs79UxUUI2zzv20uF5U0pweoL9XwmEK1bmPELTT+ckXb6mwMKGYWQ8UGsh2wmx/M51nZxLBhr1slzr7z2mJddLGveTDxHXytKTHGboPlJyvAx9XBnAoFf3SdiZqdk8BNrL9x4LPHgbb+yWGTVVqcbztMzLm8QZCyr6i2+8LbJ/usfs4s+eZ7ePS/eNh219q9i06TEZ0dMRJAkWNyxVEJK96oB3iVNCdaWNgesgIdrMf2Aq1oP2JOhCIbMuhtq8siapJutU9fO9++0YZ/0Ki2fWDikLnjYHfOLPxraR/EZm0o4Cfp6zLfSX0sozPyDquqhUQS7oI+KbtU3r/NqNt9Nh77SBOh6S1gI8zPf2nVBzgEWLBMpVYNDRZsAwMSZ8lap5+wnAhmawauWSjb92eBxDFaYoUwb6bkLv/NEHjOdKZwinJxouIIMacxOJ8AeDrbljEnuh0CwDnljoQirrONxALw7WITNgHC8avnMbuSAgNnAKc7gyFtkSF+hjTC3vktHToZ+81RJCqYkpsArzbmQIQko4jjsHZDF9czxKUqtxscE8mXoTi3e1EL6pSEafDiF5cRYJLI9iaE6go77/yLCJwUwpJe/TZbdvfzRh7EFH79euW57QIUc+YRaOXdBuwvu3H0hrrKCIztyZB6R2VwtvH3iW2N2sw9Q6TFJ0T1mEalMQvUtr+K0TE+Me2l2tgS0RkflfgDbafnzHmfUTGZ3/C+YKoBTmM6EdzQIETdQYROa7U5d5CSPBvmzH2QCLa/QzBA389Q82Sb3CG4pWijuY1xA17E+CCtP1C26X9n+p2mxzXcwh1qz8SEfxlbT+UFpY32n7pqAZastFjby6CYrIMw52oQzPH30PIfN9O/E7V+GLRhKZQ1BuNeAMtyUCl7EgfE83qMhS1bdsCuzpTZCSNeyXwoO3bFIpimxDF8Mc69S6aiFCo6K1CSKsXZfcl/YjokXgu0TPx0tJrWNK1REb8NDdQeJP0Mtu3l44bxd4iDAm4XOMCARcNKHqUspr32f5Gz/4PAYs3yShJWoXIsu9CZJXXyRgzKjU25/toqJ2KiGDO/whWSqNgTmJsfIeg3okIqu7hDDXPHjtvZKin1aW5wcPa+CWJYO5GxPe7ksj8NM5GSVoKeLOHWhvkjHk/8AMPr1/cxfbXM8ePRKN/MRFIHJXBUQ/cSvo24RR/Lm03UQQ9nAgE9ZYVZAfbOkwudE7YBIekrzL6QjCbSz5CNu1g2+cU2FiPcBC2IygN7wfOtv1gxti7CdrBv3v2P49Y/H/Y9rGZ81iIUHbcOO26nMgM5szjLiLSNS8hX7647UeTY3VLA4fjOUTfpF2Ixdz5tncvtDHIcV2MULlbAjjGdtWLajNgbdtfGA8bPfbOJVQ3h9VA2f7iiIOGj7/KmXL2I4wf9eGZ81AcKfNUszGuGagUQX8dcZ68BjidoFlmXb+SjgFWI+pBf0XQEM8lKLxTbO+WYWMR4tx8kHDWP09Enn9L9HUbM4ulUFY8kCh+P4qgEVc23pmZ5XgjEUj6N1GDeQyRVVsG+Jjt7N5LKXN0gQsUTUewMyfwEuJ+/auSbJyinm5hwgn8ke17BpxLsWy/pJ1snzrI5yY7dwGr9jqyCvrqbbZXnoCG2QAAIABJREFUzbTzIuKeuguRyX4REWi7f9A5zixIuokInPwqba9IZIRKREI+S9Dff5B27QLcZPvjBTYuIJpz14OYu9neKtdGsrMIkf3dBXgh0cc0u96uH8tCNYXQjPF3Vs9rSQcAL3GNRj9WoCxlwjYkVGd/B2xv+8b0t2GiOZnzaTXY1mHio3PCJjhGSPlPQ+FiYyPbV421b4SxhxNF538gIr5nEBmSZQs+f0S1L0n32H5Jho25gef2RrsVjRr/47z+MXUZ6GE3/CbRrx7bCxI38qzasDaO66wISXfkLrZGGP8qIpN2IcPpe1n02xEehjUzYz8UVdCXbBQbA6tmKWSgdwFeTTRo/xHwVdvLFM7lLturpGvoT0Svs6dT9vU2ZyiJKVRabyTq/bYgGpqeQzhRu9neNMPGlUQGuqoR2rdm4zDb640yvLJxK7H4W4A4JqvZvi8FEy7K+S41W3MD7yMCOlVW4Nice0nNxuuIlgi/JTIcyxK1R9mUXAVFeuf0b07CGfts7vianUay/SmrMDvwPg9Qj1lfGJf8red9VxO/7SmEsuO9kn7X5L6ohmqRPTa2Ay52osun+/ymts8snMu0UoDR9o1lA1ijcnIVtUi/LLTRuC9WcnC2I4JBKxLPrJ1tl9aoV99ldaeFavout+UGQjUgjV7S2wnGxcPA322/Ju1fk5CoL1b47dChjk6YY+LjR/R3OhYjbhwl+CrB9R9rXz+8m4ieH0tSDpNU6uE/LGl198i+KmoichWWvkJE73sLiLckFlHvzbCxgKIgdzZg/hRVh1g8LZAzCUklalajoY3jWs1pRUL1axmGUwBLpMcHtpFwtQajWO1GZG3mY4iOaKJOZUy4HV7+10nXhprLQrehmnUekcHe2KlQXNKXG9h5AiCdY7+vMj+2LSm3LuX5tg9Ijtvva9SjexK1KAfz2T4eQNJ7bFdqaBdIyqUyPeNUT5IW5/el7/J3SVMzbVT4LqG+WTWZ3YXIEJSocR4FbFZlAhVNW38GZDthjmbgR0n6BfAJotau2AkjHLBKtn8zJdn+jM/fWtK2wM8knUzck+pU4FwF3MckrWD73vrOlAF9PNPGPwgn8vmESuq9ZIqL9MGibqAW2YODXBN6cFC1DyLEPkpwo6QTGMpA7UawBUqxIJEFhsxnVg/+KektDKkJ7kIIdeTg78D1RAb6ynT/2K7BHCDubadK+gbx+76HeL7n4gFJHySYNGtVYxU0+jnGGmz728lJX5YIvlT4KyFQlQUFk+V4YDmCQv9223fnju8wedE5YRMfIzkdW5HpdEjagEi5L9oTkZ+fEAvIweJEU8ZdgKNTpmEeSbM79V/JwEeAsyWdSDx4TCwW9iDoEDnY2Pa7e3fa/kGiI+TgKiL7BHA1wxdbuapZlXz6CkQtWUUJ25qhgvgctHFcK5wGfAP4Fs1llNuwAXFuvk3S74hMVqmS39oDZtI+Y/uA9HorN2giSsy5wtwjvmsU2D4u/T9IE/G1iXqYCyXdR2QHcq/bOhZL179qr0nbi448bBjqjltvnVFuHVX9fb2BpFwbs6WMxmyEGuBCDP1es2XaqLCSh9eiXpIybSX4u4dTMe8jFqtZSA5KJezxCBF8a6rG11i23/aZ6Zq9HHgHQ45PiQLup4BfKMQsKgdjHcKx3DdzHtsolBW3Bw6RtDywoKSX274+cx4VnlZDtcga+p1TTdZX7yXovHsT5+vlRLCnBEcQEvOXJBubEMe2BG8Hvkb05TLx3MvteXYAcT86FjhZUVPZFB8jApHvJb7L+cSzJxfvIGj0WxLZuMrZXp/I0o8J2w9IOtM1SqjtvxTMAYIO/VHi93wjoSZcJOrRYXKioyNOcGgUXnIBteOVwKZElKleLP0IcE5vxDLD3tyEs7ELsdi+yPaumWMXJ6g/LyVuuncSNUh/zRw/GqUxu7lpoj1sa/v0nPePYuc8gurycNqu+gO9toGtxsc1jR+4mW8bNpKdgZT8UrT4SKfaiQafP41WqoYU07QQ35RYgF2cXk9zzHIyA5LOt/2q9PoTto8onUePvY0Y6qtzC1GDcXzm2DaECh4iFhoi6INVnZGIAMlCGTYeI8RARESOK+dFwIttjylTnxyFSjChF3ZZE+yTgG84UU9TVHsP2+/LGFs1nt+KqFk6Nc1rR6IubEyRn2TnBsK5Pq1yFppCIVq0J+HwbE7U781h+3VjjJuLyG7sAOznQrGHHlurAvsBVSDlDoLe1SgznjJXOxPn/lIuaC+iAdUik41vAw8Ri20DHwQWsv22AhtrEuf7nYNmSRQiFOsS5/91uc/P2vhFXCDWMoKNFxO/x5uJYORBxP2okeKhpIWBJW3fNsCcnktc//8tHHcMcJIb9mDsfcY0feZ0mHzonLAJjracjvT+F+UugkexsaxrvTOS07G97ayo06BQNKjerzcaqpDM/qLtTfqP7GvrCtuvGHA+9xD1KE+m7bmAW51R31azMRuwg2tF8em4bueymr+Diej7GQyvo8pupD2ojfQgrcPAQy68ESmUCVckFuj1TFrWg60lJ+x+IjPTeKGv4fWHrT2Y0zmzFaFG1kbfvdzPHbWdhaPn1lg2BhY8kbSxo63F3C6o3eqxUalfzgGsRNRlmnCm7srJxKas/kiw7dzsAgphoBXSHO5tkAnvZzNbtl/Srwixl0/bzqUN5sxhvtJFcR8b8zo1Wm/yHNMAapHV5xO927ZMu84HDndm83dJnyLYHjcR4k1H2P5m4RwWI7JQyxOUtyNc2FRYQcP/NiF08jSwk8t7pvWz+zKiRmwnF6gtS7qUyBzNTgSV/gFcZruoR15y+r9HiNso2dnd9p2Z4+8injeNejAmhkJdkOQL9W2XNRfvMInQOWETHC07HW3UDE23kMzNnmhkye/sG56klxPR5pMYTnXZnViQXjeWjZqtTwL/ZXo52ewHW3q4bkcsXkivz7A9VpPWXjuXl/yWI9jo11iyNCswkI0RMhTzAbcSynf3Z9rp+yB3pkS9pD8SdToixB+GCWB4nHoeteEM1mydTWRLzspd/PWM/8pof3dek9WLbG8h6XNup3ltI2io52HjY9qGMziG/ax+Vum9ryZUIv9AnLNLAu9yUinNtNEbABmGsQIpklaxfVdte94m51lt/AbACUQN4NKK2t+9cjKMNRsbEvS0QWyIqL16se1DJS1NKOJm0RoTa+KztvfL/cw+Nu4E1nX0o3oe4RSvW2jjXOKZdznBmHhuSSYu2biNcJTuSRnfIz1gn9BBUAWpFGIyS9k+SIVCJcnO1cCBti9J25sCn7G94Rjjfk4wc/oulHPvAW0GYzpMLnQ1YRMf+xGFqyfRx+kotNW43kdR3P1SQtTiTbU/zU9+vczWJZ/ZD7avTw+P9wFvS7vvBNZzRmPUHuyV/q9ThgwsXTCfQxWF9Jukse9pSGm4QNJHmd4hzM5iuQVFxUFtjDQ+nTPfIKTVc/A08GdHE+yNCZGO7xdM5ZsMiWHUX0NmPYhakLkHXpycJ9Ve1228sf+wvvgiQck6QtL1xLny04JMUBMBgF4skbIrb5R0Cj1ZwpxjoqHeS9P9ifzeS0+lhc+S/ZzLHIey3wJLtf5rRP/AIqinnxVxr87Bl4EtPSQ2siJwFkNN7XNQ1dn2zdwyRk1X5YDVHR+gkeOTUNXFnJ3s3yqpNND0pRZsfJ3IaG9O1A89QgTNspwgh4LooBTtJ2w/luz9K2WyS7G47QPT6/MkNek9NdWp/YHt6xJ9rwg91291rlXnXe71W2F2BbVyJ6JtRVPMWzlgxCQuTdfyWDiJyGp+h3BIGzXOHk82QoeJhc4Jm+BITsfLiWLet6Xdd9DM6ZjqzD5cfbAS4UQtCLyhtv8RovHxmBg0slyz8zeCfz6oney6gjHwONFnxOn/JqgiZXWFuaxieEmb2764xzkeMpJBhWjDxmiw/ZOUeczFmcC6KSP2XUJp7mQyHXmn+iaN0JYhcw5VT7O5icX0rcRCYzXgOoZ61I2GbWqvi3qt9SJR/S5LkfnNievu20QgJGd8NrV1FHwK+DiRqenNJjrNa6x5DKIUWWFrghq2OQM6l+rff+0bow4aPr6NflZ/d62WxvavJRU1nW4jCJPQhuNTzemBSERNQ7HYTws21rO9lqRfJnsPpt+8BL9MAZTTGB4ky70vLlcLwKhnOzcYIw0XoJlS384M2NUFeabbzmEItHT9VjiUUEi80vYNijqzohr1hPsk/R/D+571Y3UMg+1TJf2MuK/dKOl7DFcELWJMKFrlfAZ4ge3XpqDMBs5sWdNh8qFzwiYBkrN1UHpwrEzcJB4afVRfnCPpfTSo97F9FnCWpA1sX9Pgs1uJgLdBaeyx9xJgFYY3NT25YPwHiKzcGWkOp0o6xnaR4tWAC6hXEsIRb+jzNzO9suaMsjEiJM1HmWrdM7afSk7h0ba/Ui2iCtG4LYOTzH3K+LzbSVQg1R9kNSR1Ro1UCRTSy28gMmJrERHc3LHnMEoWMGchaPvHwI8l/Z/tT+d+ds88BqLNpff8EzhFURdbqmRYzaO3/9r3gJeXRLU1vJ/VDh7qZ3V/5vjqmN+RFuV1YY9SFcC63Tcx1PfsChf2s2rDeSLkwzcEnJ5dewOlghRt2HgqBS6qXlSLkq/CWWFhQsK9HmQouS9u07PdJCCzABFwqP8wVTYsV72ylxXQu12ElCWt6qovd6GohqM9xWm17fsI0aFSvJ1ow/ATmKY6mXsdP0U41nMRx6L03KjjJEKVscrq/ZpgLHRO2LMUXU3YJIHaaQbaRs3QksQidiOY1th0H9t/zLUxCNqs40iZmVcBLyGica8mInJ9s0Ej2LgN2NCp8Dw5G1eXOoNp7IZMX6/33VI7MxPq35R4IaL4+mvOLEZPdLvPE8Xw2zoa8WY3gNZQW4Z9ich+hUrwZPW+A/vbGqSx6UhBAwBKzhOFFPR6RMuKU4FLnRq2Zo5vQ1RjYIqmWlA2lPRVRj+uOfVtzxD9197mof5r9xXeD88C1iSyRifbvrrERoq8jwTb3j13LjWbXyfEG6oeUDsDv7Wd1cdN0o+JLOfXCDGLvYnMXhH9XSGG8WUiY1nJj+9jO7cfVVs2dmN40GIH4JMe6k/XoQEk7UNk4ytHdDvgeNtfHXnUtLH72z5ypOs45/ptAwrlzKOI6/fQijI6gL0bbK+r4YJMWc+KDpMTXSZs8qCNZqBt0FVOJGhhVW+tt6R9W5UaUqg91TNQY0ozt0VpTNgZWAO42fZbEzf9uEIbIiJpFZ6i/+JydCOxGFuOUIiqos4mqHhjjT3JqUBb0h5NaGdt2EjojaqaaHz5FpfJU7+dyDAemRywZRlaVOZgTqKmZfaeOT1MLMJKcLekbxE1aSbO+dxo/MB1kDWcCOzq1GS5FC1l5b44yt9y6Yht3IdubMHGwP3XPGA/K9tvHelvCknzJnglsKpTBFbSdwg1vVy8h3B8Xkg0wT2f4TTpLKRs5W6l42aAjR9IugnYgrg3b+tCifhBg49tBmOSvRcStNd6wO7ykUdMN35RwoFapsdGiYDEOwiqZ6Va+TngGoaano+G6vgPdB2rp8a2FxnZ/QOJFjNZKooZeFQhvFJde+sTtaEdnqXoMmGTBOpRz1NwRS5zmTriHERTxGrMpcBxLihGlXRrbxahNNKTKDhfBF5AyKG/CLjbeT3P2ijqr2xdb/vl6QG9KaGUeHtutiXZ2J+gNNXVEX9ou4huIuluYBU3uGDVggx6GzZ67O3YG2nut29GQzU5a0Ux/Hwul3Wem+HXzeXAsW4ojV4KtVyvV8tE9drJzgC1AY1QZ1SymGxxLo37r/XYeT4R3Hkzhf2s0vgV09hdCTGH4gi6pJ8AH6qd9y8i1P12KbU1CNRfjfM/wI0Oevt42XgZwXaAeM7ckTOux8YFRPCxXnO0m+2s4GONwVE5s5Wd3YDHbB9aMJfPEefYXdQCdjl04pqNq4ks8E01G7igb2ZyLNet7oPpPnmD7Zfl2hgUirrJB4gA3XUwnVBQq3TwjPmsRTihqxK1+4sSNOXGvc86TGx0TtgEh1pqBppsfYvoiVNlOd4KPG37nQU2LiR4z1VWYhdgT9tbFNi4lYiYX+iQp90M2MX2u3NttAFJxwEfIx6EexNZkrtLKUCKdgGvIHHR3UAdUdJpwN62/9JgbBs9sVqTUh/JRo7dlOH9ONFg9mgiM7kJ0S/sXTl0tx57JxOR/aeJBccCwFG2P19iZ1CkiOhXiZrOOYmMy6M5QQNJhzikm/vJILswek2K1FaYm7iXLGz7U4V2VmX6esps+qyiRq0+j5cDN7msZcaixDXcO49sGz32ZiOob28uPa59bE0LAIzxviUZUlScAixFZBh+M+rAke1dRij/VZm4dYkMRaXON+pivQ3HJ9k5nnB+qsDL9oSS7VLAfbb3nZE2UobyrPTe24j788uINgDblARjBqEk94y5yvZGY+0bw8aviN6U/xvzzSPbGJgip6Ce78FQPfQ2RMPjozPGDprBquxMIdZGuxCCST8jgqBtZbaKIWl2QshMxBqtkeJih8mBzgmb4Bhh4VWhaAE2QhZrun1j2FiaqBXYgHAGryachzGphDUbN9peJzlja9p+pspK5dqo2SqmNI5gZ3lg/tJFfho7P6EWV6d1FEW+JF1CUCOvZ7hoypgPI0l/J6hUIiKkp9T/7rz6mIFtJDuvJZTmdiIKkivMT2T6Rv2NJV1BOPjzE1Hj/YFzCCf3INvr58yjZu8W22so6kLWJhbsN5XQf1KW5GCmp/+U1A7dSCy0T2OoxcTyHpKcbgRJ25dEr0exc6XtHLXH6v0HEdnjVYCfA68l6ilLqZ51m0sR9NPsjI2k84nz7KOEs70H8A8X9jCTtBrTU7OyM4wpg7Uf058jozqDki4HFiO+wym271YIezSmbGrA2r82nKdk52LgVU5Np9Pi9Hxi0Xy77VVmpI3kTD4J7O9UO5kW7UcA89j+YM73SOMGDj4mO7cAH7B9ZdreEPh6IZPkFwSFrnEDbEmHEbXLP29qI9lZiyGV2CtsZ4knzYgMlqS5iN/l80R9Vw4tshWMxFKoUMpW6DB50NWETXC43f4TT0tazqnhrUIOtqi+JDk5wxwDSfsSWYtcPKQQsLgc+EFyAKaWzGMkSiPRy6zEzpuB5WwfLmkpSWvbzpa8TovRdxNyuFXEwwxR13JxcOH766g3EW3KsW/DBsCf0/g3Mlw6/BGiafJYeK6TsqSkd9muFj2/kHREg/nMoaDhbksIgzwlFZfsnUDMfRh1pxS2fyNpiqOm68RECRoUX2KICpsFDRfXmI1wCksV0nYAVgd+aXvPRMP7VqGNXvyRoPGU4Hm2T5C0j4ck/IsWcJK+TUTR72RIGa1UEbTqwfhNys6RR4h71wIM/QYDRU5tX5bobyvYvlChqDm77UcyTSwPbF5zfI6l5vgUTOWFwLwM1cTMS0h3Py0pN4sziI0tiYxRXXL8aUkHUPY9IGpUv0Zcb1XwsUmm9B3At1OWzsT3KrXzGHCLpIsYHrArEbPYBzhA0pOEo9qkxxfEue70r0RVcHGGMli7MkAGKzlfr0+2lgG+woBqvg3QT1W4wsDqwh0mLjonbJIgZcT61XGU3MD3Ay5RFKGLePi34eR9mDInbBuit9aHCCrgAkS/kBJ8mlDuGkZpLDEg6WsEPXMT4HBCpvYbZDbxTNgVeHFTakiaw8mDcNedRDQ0Qh3WeNlIdm4FbpV0ckMaRv1B3lvQ3EQ6+DjgfqLH1+VpcVpaKP0fF6iQjoDHFBLbt0g6EvgLsaAcFMUeJcPFNaYSAYSdCm08njLYU1Mm+O/kSWRPg4Yro81GZIJL5earc+wvkl5PBAGWLLSxfk5WZgw06sFo+/UKyf4dgM8lpsFCktZqkpWHCF4QgaGFCbGfJYn7Wm7Wpg3nCeBI4ny/lDhPNwE+o2iie+E42HiyciTrsD218HtA1G2VNFbvixTgWz1dM7LdRLTh7PRvkHkM3OtLQ+qIpxO/zfclZakjpkDUucC5tQzWpZKKMlgK0ZlVCYGyQ9yg3q8NtBws7zCJ0NERJwkk1XtnzE0IQPy5gCY2G+G03MQQX/meQXjlNdsPOLMAPdFBzrO95YCfOTClUalGScNFKUrpmT8hekj9s/xbTHuQvRlYgqAk/dD2LQ1tNarDattGGrM14ShX9KysSKukx4B70vtXSq9J2yvaHshxUaTB3ulMqfw05rNErc5PGB55zl4kJ+fv74TT/yEi8PB1N6z7qdn9g+2lB7HR8HO/DhxAnLsfIURtbilZjEjao7Y5FbjfPY21M2xsTQgMLEXU3M1PLMayF6mSTgC+aPuuks/usXEw8fsW92DssfMC4pi+GXi+7VFbcoxg4xaivu662n3tdmcKJkh6B/BJQrhpmuNDUMcOtr3fyKOns7VEmouA623/ueCrDGRD0j3E4r43UCHg+7ZXzrDxBqIh+lQi67OT7cYZbLXczFfRrHkpl9PfRQRAl7X9aQUVeAlnKHrWbNxGzL1SR5wXuCaX6t0ng3U28G3bfyqYwzMMNc+uL3abZvYGRgoGvZThZRKlQeYOkwSdEzZJkZyqC8eqOegZc43tDWbAXIoWgoqi3Lc2jAJWNi4kKGZHAIsQC6B1bW9YYOM6orbtxuSMPY+UWSuwsTZwJlH4XV98ZfcaS3ZexNDia25iwXOK7V9njB2oDqstGz32fgO8iajbyL4JKYQ5RkRFpR0EDc7XS/pPpZn4Qyk0eoPyFW3PlWmnrTYEvXaXIeopsxaCkpZ2w9rNGQGFSuM5RCuF/zG0gCupGxy4B2PNlojs02KO5rWl46+zvV4VXFLUUd1c+H0Gdp6SnYWAFRi+IC1Sv2xqI2XPRpOF3yzDxm2E43WPpPWImsVRa+7GsPcLUjNf26un3+aXuQ5ysnEpQfeenVDy/AehlNyvR+NINo4lmAWb2145HePzbWezQDSAOmJPBuuUmZXBahuSvgE8B9iMoGfvQFw/75ipE+sw09DREScvVgBKI+Dnp4zaT0oWxgAaXRp+nsJ5PAHcrpD9raJYpZz2NiiNxxBUikUlHUI4IIcU2vgOUSdwO83ocsC0/mefIyhJaxLR14PI61s0aB1WWzbqeAC4o/Q8a8PJgmmLp75/Ap5fYOclwGFEVuG/tf2vLZzPILLwbfUaq2d492FIJTUbGqVZcwGF7kyicS6STre9/Rjv7/dZAzdrruHbhFJs42vYA/Y+k/Rd4ANExuVGIrD0WaI/ZCkuU9Q9zSNpK6Lf3jljjOnFEwRldm5geUnLN3Ce3kmcZ0sSzsL6hEpjSeCwsQ3bm5bMdwRMtX1PsnedpEFpfIvYPlXSJ5LNqZJK60wXsP1wOjYnOpRTSyXQ16tYIGkeDyro0iU4EbhO0hlpe1uifjYHbyWe/SsCe2uoTnemZbBawoa2V5N0m+1DJH2Rrh7sWY3OCZskqDlBYqgBbpECGFG7NS8wVdITFNzw3AKHvIafpX+NkCiNZyVK4zMULiYl/Rx4n+3vKnqEbUkcix0bROT+bbvJQql3TnMAryEyYVsAl5HpEHrwOqxWbPRgf+DnCpGEeoZw1GMl6UFG7wO3cObnPx94NSF132sni04kaW9CofFuoBJ/qCS6D6egUTohflFhmix8zkDbv1c7NN42aBH1erK1Ge6wZzVrZjg9rGlvsrp4zCFEwKIp/lBCX+wHSc8h7q9L2363pBWAlWz/NNPEy9LCeldCBGN/4js2ubd8nBCAuB3Yi1CvzBZNacN5StiHqK+91vZmKaBRGuRqbEPtKNYtppBi77vd4N7fRjPf2VOmciei2XATPJXuKdU8FqUwAGH7qJSV25i4pvd0pjqi7dnKpjth8Hj6/7FELf430EZz+g4TFJ0TNknQhhPUsiPVGLa/o1DsWtr2rxqMf1rSY5IWaEhpPInICn6HoJcM0lPkBkmfJvjsdWcjl5pVKURtTUj1nkLUmD066sD+eHWaS1Ed1gywAeGk/JdwOEoirIsUfs5I+CnRmHm6+rq0cMjBu4C1bf83Ue5+LGkZ219m+jqTUWH7Xz27jpZ0JZDVm6uFcx5gSYVst2qv658xZvaoTuFKdLcxKV39zIzwOt9AjUopad8BqZX3KPrJncPwa7gkgn0i4ZBWdOg/EoqJuU7YnImatg3RCPxJSU0at08BvmP7LYRSYxO04TxBNJt+QhKS5kqUvpXG0UalWLcY8btcnLY3I+rdcn7fbzJcObR3uxQfJp4Vy0m6itTMt9DGocB5REuIGxQqx/cW2vgKUb/4fEmHpzl8Mmdgoh2+h1DRvJ2obS1SN57E+KmkBQlBmSpANahqbIcJjM4Jm+BQ1Ao9VC28FCqA2xKKb8fYfjLDxgdsfy29fumATsfAUBQ7f4FYnC8raQ2ir0eJ+lRjSmOig/yMWADfKOl71KKAhdHNqlZq0/pHkC9RfwBwMvBRFxbx98HRNKjDmgE2IJr/vqp0kEM1axoUynFz13Zl1aaMxsG3vWvmdKZUFETb90valHDEXkShE6Z2ZOEHpfG21YZg2kc3HLe6pIdJVOb0Gpo7/INm+OYhnK/6+VoqK72c7Z0l7QJg+3GpqBfCt4gmwncQdMKlCSpwEZKzvqikOXOeDSOgDecJ4I9pQXomcEHKcpfWljW24SQSI+mnRF3rX9L2EgQVPcdGE+dzNHs3K/q4NW7m61CvPa22fR/Ry63Exg8SC2SLNI9tbd+dOfw7hCrpFUR/wJWBrN5xkxWS1gUesP3ptD0f4aDeQ5QrdHiWonPCJj5OJZQQ/5OcldMIMYo1gK8D78ywUfU4AfgeqR5jJuJgwnm5FMD2LZJKU/YDURqJh8ijwFzEYrhpLcgrBpjDtMyCpOUkPWr7f2mxvxrwXdsPFZhrVIc1A2wAXCjpVbbPbzJYoTD1JYIS9S9CNvvXRBPZ8cJfJa1RZdNSRmxrooYou5A+oVcW/n4V/b+zAAAZY0lEQVTKZeHr53z1+2Qv9N1SG4JBYTunznHc4HbkpZ9M2f2K3rUctaxaxhy+RG2xJukByul/Fe4HrlIIINWd9dzgUhvOE7a3Sy8PVojbLEDIko+rDWCZygFL+BtRi5SNRNd7F9M39C7q8ZWus3Nt3ynpk8Bakg5zRi2lovXApbbvTQ7+CUQG635gj1wqYA2LENL7JybHfVnb/QRmerGKk/iGQlk0W1FxEuM4oqyhEvr5LPBBYp12POXZzg6TBJ0TNvExj4eUqd5CSLh+UaGO2ETKvElfobYx1fZ/egLFpQIOjSmNkl5D1FqcDaxl+7GS8T22FiWEG15oe2uF5PDLbZ9UaOp0YB1JyxMP17OJDNnrCmw0qsOaATYgaqn2V/TjeYryLMfhwEaEYteaibZZLOAwIHanp4l4ot3sLum4EkMNaXsASNoGWNL2MWn7eoLGZMrrQgE+QS2SPsq+fnOpBDEaUxrbgIYLBT1nkGyapCUJefuNks0rgX1s/7FgSgcRzsFSkn6QbL2tYA7zE/f3ZRj+3M5WvKvhz+nfbDSgzrXh+KTn0222V002i/sgtmEj4VJJ5xGKsybqbvspno6Gs4jMz4UM0LAd+D/bp0namKhZ/QJwLLBexth9CCo9BIV9daLeaE2CXpgdEJR0EJGNX4mg0s4BfJ84b8fCtMydQ1gk92MnM6bUmCw7A8fbPh04XdEyosOzFJ0TNvFRv8NtTiyWcPTFyrWxoKTtiIfy/OopWC6sfWgDdygK0KcoCtj3JlMsocKAlMYDCRGONmiZJwE/YGgxfC8h8X5SoZ1n0gNtO+Bo219VUq4qQNM6rLZttFF/ONX2PyTNJkm2L0i1C+OG0RbhLuhnpVC7/AhQNQS+kahF/I2k2TPqKfYnFo4V5iREMeYjFlBjOk9pHlUbghf2OE/z0+NsjoIbR3g9rmjh/KrjRCLgUWUD35L2bVUwnwsk3UyIWIhw4kp6B/4cuJkBVVbTXBpT6NpyfNLz6VYN0I6gDRvJzgfSfbWiiB9v+4zRxvTBc2w3CXj0onLgXk/U/p2l6DGXg6k16uLWBFPiXwTr4MjCeWxHOG83A9j+s/KVHys6MQynFE90ZcNBMKV2L9+CaJZeoVuHP4vR/fgTHxdLOpWQC16IVFyceO25nP/LCOlxgMsZKliG8tqHNvBBwhH6H7H4OY/IJpXgYBpSGgelEPZgMdsnS9ov2X5K5ZLDEGpVuwB7MPT7zFFoo1Ed1gywgaSNiOa9j0p6C0GBPbpgMfUfRfPPK4HvSvo7Ay5OZwYULSE+RzRoPZJYqKxN1Ja9lzjvtxjDzJy2H6htX5mirv9OxygXA7chmFUojS1jUdsn1rZPktSkxmVuQo1zdmAVSSU9sZ4zaBZR0tG295V0Dv3bIYwZoGrL8UlYArgzZW7rtMiS2t82bEAE+aYSx6UJfe6nkl5n++cNxtbxp5RF35JoRzIXERzNwTPpuf8gcc+oB6VK28Q8adtK4i8l95FZjU48i+CHRC3nPwmFxCsAErOlcT/UDhMfnRM28bEvkd5eAti4FglbnEx52lqB8nSc7wa1WG1gJdsH0lxeF1qgNLaERxXiEdXDbF0aFNQDexKKU4fb/l36Xb5faGOgOqwWbUBQbFaXtDqRyTmBqEfMbXS6LSFEsS9BC1yA9vpljScOAra0fX9t362SLiaKtnNongvVN2x/oLa5aO5E3G4bgsaUxlkQ/0yBgh+m7V2IOsRsSPoccZ++k6FggYmgVw5OlrQnoaZYpwE/PPKQ6fC99P8XCsb0Q1uOTxuiFgPbkLQT8HkiYCfgq5L2s/3jAjP7AAdIepIIfjbN+uxEtCL5gu2HklO13xhjKnyKCKJMAc6umBwKoY/Spt6nJmdwwVRr9naaq2k+62H7cEkXEdfO+fa0murZiKBzh2cp5IHr6zvMSlD0GNmE6G1z01jv7xl7s+21evbdZHvtNueYMY9LiJvVacApTWiBqSD4IqInzvYEpXEO2+9pc64Z81gH+DLwUuBWQkBixwZF0m3M5RGiD1zTOqxWbCQ7NzuagX4K+JPtE/qdf6OM/4ztA8baN6tD0l22Vxnhb7+yPabqXKoxutT2N3v27wVsanuXwjltDTRqQ1CjNO5E0G4rzE8U7L+878BZGAolwq8BG6RdVxF0wt8X2PgVsJrtbDGOnvHvITKm9Vo32166wEYb2atqUT8dBqjJmqmQdCuwle2/p+1FgQttrz76yBk2n9UZqt+6IgVHcsduDPzPIU2/CuHQ3QNc7loz+UxbWxGKoCJ6EF5QMr5Dhw5jo3PCJjgU8roft31HiprdTETDliO47Udn2HgJ4SQcyfCo2/zAfrZf2v7Mx5zT4sRCbuc0jx/ZzqYkKpqjHsiQrPR5wGG2n2h7rhlzmZOQ6RVwlxtIQ6fauCOIuqFpkuy2mzaznalQCHucS2T4NgH+QdATs1QFRwgY3DqzFk5NkRaAb+hdHCtk7s+xvVqGjcUIpbr/kWo4CErjXIS09N8K5/QbGrYhSAvINYheRfUeZ48Al9jubY79rICkXxDBl6KFcG38b4ENKkehoY1p14yk022Pt5BN73zWJwRPVibqGKcAjxYGhdqwcXv9vpPq3m7NvRelMQJ2A5a1/WlJSwFL2C6iNkrah1BZrEoAtiOe41/NGHsQIQk/O3ABIeZxKUFtPM92Vs2s2mn83qFDhwx0TtgEh6Q7KydJ0gHAS2zvnopor8pcxG1D0LveSKjuVXiEyEQViWK0CUkvI+hqO9vOFoKQtObMyDaNBUUft/1tv7Zw3JUEde1LRE3YnsT1e1CBjUHrsFqxkewsDuwK3GD7ipRt2NT2d8cYtxdBy1wRqKtePhe4sTTrM7MhaVsi+PEZog7LRCPcjwMfs31mga3NiWAKwJ22Lx7t/aPYuQTYwnbjGjtJc7RAaZwloAHUETWkFvlCQq3uIobTCbPqvFId146DBJEUzbPX7H3dwM7Ajk+ycyMhKHMaocS3O7BCSTa7JRufJ1p+VHTTnQnxkWyhDUnHEjTTzW2vLGkhgna2bq6NZOc2wtl+NG3PC1yT+Ry/nQiAzAX8lVBMfVihEnxdjo2arbOBt7p54/cOHTpkoKsJm/ioL3S2IPG2bT8iKWsRZfss4CxJG9i+ZgbMsQiSViYehDsQtRc/ItTjSnBUygw2pjQOgkTZORZ4AZGlOIJoYjkPwwumczGP7YskKdGgDpZ0BeGY5WLQOqy2bGD7r6R6J0mLEI0sR3XAEk4lFrJHEI5KhUcGyRLMLNg+U9LviPP7g0S29A5gpxIaUrJ1MUmYZ0C00Ybg1ZIaURpnQQyijlgpRN7E8ABXKZ4EfplqBeu/SYlEvUd4XYqv0cfxaWLIoQA6xdGE/URJxQG/QW3Y3k+hCLwxcZ42UUdcL9Grf5lsPpgYEKUQwyXun4bstjFT0zF4TNJvneoFHY3BSwMqgzZ+79ChQwY6J2zi4wFJHwT+SGQlzgVI0a9S9bwHJJ3BYP1w2sBJRAH6e4lMSXH01/ZmNUrj8Yo+O0WUxgFxNFGHdg1BEbkeOKRwIVvHE4kmc6+kDwB/AhYrtDHVtlPm88upDmuP8bSRouifBf5N1B19j2gKOpuk3W2P2m8o0dkeBHaUtCqxcIJQm5pwThiEIIakg22XFs/PKLTRhuBoGlIaZ0E0Vkf0kFrkvMATaZFcUb7mKpjDz9O/QVBJh9dlw6GBg9yG80Q4C3MSYjBHEgq/JWqebdmAqPN7iubqiE+l37QSYFqUZmqtJwLXpecwBEPlhMyxT0p6jqOv5bQ6bkkLNJhLvfF7hw4dZhA6OuIER6oHOZQQsjjGSbUu0d7Wtp2thJWiXiczpKL1FmA329n9cAaBpNkJWtbbgT8Qi4MliQfTgU3pTU0pjYOgl+4j6T5guaYLUoWq4t3AgoTzsgDRS+raAhsD1WG1YSPRhw5I8z8eeK3taxV1iT/MpUhJej/R8Lmi621DnP9fz/0usxIkXU5Q1m4gFPOusH37TJrLjbbXGdDGwJTGWQWSLiQCQ3V1xD1tj9U6oG7jWkIF879pez6CrrbhAPNaz/Z1TccP8LmXE3VGJxBOz1+At7mwHlNR9/g3wtH/EFH7e6zt34yzjV51xFcQtdDZ6oiSdiPYG2sT58oOwCfd06Yh09ZaDGXlLs+l1Uuay32EXxLTYImS+8lIQYPk4HXo0KEldE5Yh2lQH2EDSbfYXmOcPv9LRG3Ph2w/kvbNT0gqP257nwJb/SiNPx4vylpyuurR8qPr27YHoSY1nVOjOqw2bdTPJ0l321659rfsOpVUO7Fhz6L26pK6h1kNKaK/LrApsBcwn+2FZ8I8Pgtc7AHaEKSgwaeJHoRNKY2zBDRcHdFET6lSdcTp7qM599aU/d6ecNDPs323pNcQgYyFSgIobWFQxydl0Ze0fUzavo7I6puolx3T+WnDRs1WK+qIKZBUOeYX2767YOyo17mj79+4YUYEDTp06DA9OjriBEcqoB0RLuvd8g8N2A9nQGwNrFjPFqXC4vcSMrvZThgtUBoHxFUM1ZD0bpvM+pA2f98B6rDatFHPjDzea77AjhheD1nJ5U9IKKSlX5H+LUicu1fMpOm8H9hf0iBtCNqgNM50pAzA9oX30X54VNJatm9Odtdm+vO/H74FvJjIkB4r6V7CSf9EiaPRBvo4Ppcx5PhcA+Rmn/YnasoqzEVkkOYjWA8536sNGxVm6wnO/Yv8Bsl1PIcQKTHlzZErUZ7qHlbdC5Vej7cK7tyuKXna/q9CcbhDhw4tonPCJj42AB4gHKfrGGwh+nYi4vslhiK+ew46wQK4H13P9tOSshboNUrjcoS875uAJSUNRGkshe23pgXctrZPH8DUwL/voHVYbdlIGK0uZe6Rh02bx+y2p6bPv1ZSdWy3I4RPJiouI0QcjgB+7gZtDNqC7ee2YGZh268a+22zNtK9ZxvinjgI9gVOk/TntL0Ew52IkbAe0V/s6VTn+09gedt/GXA+TdCW4zOn7Qdq21emTM+/Ew1uvGxUOFfSeQxXRyyqv1P0O9wROJ24l50o6bTcGmTby5Z83jigN2iwDnlBgw4dOhSgoyNOcKSF/lZE1mo1opj2h25JDVDSvs7oNdbSZ50J/KQ3s5KyczvlRKPbpDS2AUlX2H7F2O8ccfzAv28bdVht1XINCg3vdbQukTmqaiduGI85zAhIWpAQxNmEoCQ+Q0hT/99MmEsbrQwGpjTOKpB0OHHe/4jhSnE3jzhoehtzEb/pSsT5eg+RgRm1ebN6+uH1bo8nJN3gmuS6pK/Z/kB6fa3t9TPt/Mb28iP87be2lxsnG/sSDIVbiLYf9TqsInVESXcDa1aMi+Qw31ynW2fa2Y64bv6Tthck6N7ZrSraQLq3ngL8mQjIvoCoqb5pPOfRocNkR+eETSKkB/0uRJHxoc5o8Jhh8w+2lx54cnmf9UKiSeXjDO+ZNA+wne0/Zdi4lx5KY9o/BbjHdiMp5aaQ9EmCltW7gHt4xEEj22r0+7ZRh9VWLdegGM/PGm+kOsZXEo7lhsAfbBdJ/7c0j9uInlarERnHE4A3lcxF0iOESt0glMZZAgqRkV7Y9uYFNvo1Fx/ToZL0GOGwQRzDldJ2dTzHzSFrw/FJ7/0BcKntb/bs34twOMbs9deSjS8Q19lLgNsI5sdVRPCjqAZL0Yx7F9sPpe0Fge/b3rrQTr/awfG8v65LUMz/KmkOojb1TcBdwKfGuzatQ4fJjo6OOAmQFuevJxboywBfIZyZVsy3ZGdMJCdrPQ01nRXwC9sXlZkZjNLYMvZK/9f7nBnIdmxb+H3bqMNqq5ZrUCwqacTeSJ6Awg8Qi1ii+fSVwDcI9b2ZRUkcuJVBS5TGWQK2N2s6ViFk80KCersmQ/fT+YkaorEw7sIbo+A6Se8awfEpkXX/EHCmpF2BKpu4NkFv3Ha8bNj+KEwTxFmHcMjeDnxT0kO2V8mcC0Sw4U6FwjCEeuSVkr6SPiu3v1a/WrTxXKcdR8wdggp/ANG/cA2CAbHDOM6lQ4dJj84Jm+CQ9B1gVeAXRB+qO1r+iHF3XDxY09m7Uo1SP0rjPSOMmWGwvdQg41v6fQeqw2rRRhuYQtSgTFgRjhGwgmcdOfdHJH2CaFGxScoiF/UcbIPSOLMxmrMP2Q7/q4G3Ea026u9/hFjgjgrbv01z+YztYe+X9JkcGy2iDecJhwjGhrVgG8DP0n1/3GzUMA/hFC+Q/v0ZKG0PcR7RRP4ZosFyv+xpDm6UdBRwDPHs/SDBChkvTKllu3YmGlefDpwu6ZZxnEeHDs8KdHTECQ5JzzBEc6v/mNn0n0Qd6nciCJjH9oRx1tugNM6AOb0EWIWas2L75MyxA/++kwkzsyZmRkLSksBXmfmN0ttqZTAwpXFmQ9JB6eVKxD2kUip9A1E39M4CW9t7AIGeEeiM07UUGQ/0OD53NnR8ZjokHU98j0cI0aNrgWsdDeFzbdR7W/6eyGQtRQiVHOBCISiFqMj/EdkoAecDh9l+dNSBLUHSHcAatqdKugd4t+3Lq7/ZXnU85tGhw7MFnRPWYVKih9J4ZyGlsc15fBJ4FVF3cB4RGb/S9ptmxnwmOiZrTZhmcqP0kaBoQ/CvfhTfMcbdbHsthWrcnxKlcUI60JLOJ2TqK6Gf5wKn2X5Nxti32P6+pI/QJ9A1VjYtUf3eA6xI0FUrPBe4Maf2qUN/SDqXUHi9g6gHuwa4o+Rc1+hCUI/Z3ne08bMaJB0IvI5Q4VwaWCtRk5cHvmN7o5k6wQ4dJhk6J6xDhxkISbcTfPqbba8uaQngOA/ed+hZCUkLT8bi8BEK8setUXr6vBHbEAAlbQiqHlLnEi0uNgH+QdATZ6UapyykjMDqTkqGqUbzVtsvyRi7l+3jalm1Omz70DHGLwQ8j2hd8PHanx7xODWen8yQJCJYt2H6typx/l9ju99v1ju+VSEoSSsCHyVqf6cxUEpEYAZFug8sQTRnfrQ2r/lcoAjaoUOHsTFhaGYdOkxQPJ5EQaamCPpfGf/Gm5MGk9EBS/inZm6jdIgegVUbgovpaUNAOFW52JmgNL4jKa0tTah6TkR8D7he0hlENms7IJea+TMA24f0/kHSG8YanKhxDwI7SlqVkFGHaOTdOWEDIjlPd0h6CPhP+rc18HJgTCeM9oWgTiOEeb5F1JaNO2xf22ffr2fGXDp0mOzoMmEdOsxASDoO+BiwG7A38DBwt+3dZ+rEOsxSSE7K1whFsqpR+t7jKWShGdSGoCmlcVaCpLWI1gEQ9WC/zBz3K+DVtu/v2b8n8Enny7q/H3g/UPWL2gY4xvbXc8Z3mB6S9iayXxsRbRSuIiiJVwG35wjlqIXelj3jbrK9dsmYDh06TFx0TliHDuOExKufv6N0dMiBxrFRevq8eiPsRk2C26Q0zkqQtDGhYHmipEUJatbvMsa9Dvgy8Drb96Z9nyCyhK/NFV5JQicb2v5v2p4PuNr2as2+UYekQng1cJXtvzS00aoQlKSDiQznGYTsPTCpGQAdOjyr0TlhHTrMYEh6M7Cc7cMlLQUsZns8ZYc7TEBoHBulp897mlDiFLGIfKz6EzC37TFl6iXdyBCl8Xh6KI0TUVQl1XOtA6xke0VJLyCEObJECiRtQfRf2hZ4J7FI37pQhe92YJ2eurQbJ2KN3WREW0JQkvo59rbdUdg7dJiE6JywDh1mICR9jeixtIntlSUtDJxne92ZPLUOszgkPeAB+8yNN2YUpXFmIvVHWpMQ11kz7butJAuVMmlnEpmXnWw/kTlu9iQXvj9RJ1jJ3G9HOLVfKPgqHTp06NBhFkK/7uwdOnRoDxva3gt4AqbRSuacuVPqMEEwESNk9Tqax3v+NhG/D8CTqZ7NMK2XUxYkPaJobP4LoiHwFsDfa/vHwvUAto8E3k1kJx8H3tM5YJMHycmuXu/Y87fPjP+MOnToMB7o1BE7dJixeErSbAwt4J7H8IVqh2cxNEaj9HGeThtYPTkXAuapORqi1qx8guHUJLCzoKR3EY15v5kz0PZzB/xs1WzdANwwoL0OsybeDByZXn+CUEms8BqC4tuhQ4dJhs4J69BhxuIYgkK0qKRDgJ2A6eSqOzw70cIifZaC7Skzew5tw/YXJG1FKJuuBHzK9gXj9PGLSvrwKHMbtdlzhwkDjfC633aHDh0mCTonrEOHGQBJPwfeZ/u7km4CtiQepjvavmPmzq5Dhw4lSE7XBZXc/jh+9BRgPrqF+GSHR3jdb7tDhw6TBJ0wR4cOMwCSdgIOA74DHGn7qZk8pQ4dOhRgVpDbz20N0GFiow1l0g4dOkw8dE5Yhw4zCKmA/1MEp/971GrBOhpRhw6zNmYFuf2JqijZoUOHDh3GRkdH7NBhxuEpIro5F/BcOkGODh0mEma3fT6ApENtXwtg+x5p3NiBW4zXB3Xo0KFDh/FF54R16DADIOk1wFHA2cBath8bY0iHDh1mLcx0uf3U0qJDhw4dOkxCdHTEDh1mACRdQfTyuXNmz6VDhw7l6Op0OnTo0KHDjETnhHXo0KFDhw4dOnTo0KHDOGK2mT2BDh06dOjQoUOHDh06dHg2oXPCOnTo0KFDhw4dOnTo0GEc0TlhHTp06NChQ4cOHTp06DCO6JywDh06dOjQoUOHDh06dBhHdE5Yhw4dOnTo0KFDhw4dOowj/h+u2+PDufvJvQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1152x864 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "corrmat = train_data.corr()\n",
    "f, ax = plt.subplots(figsize=(16, 12))\n",
    "sns.heatmap(corrmat, square=True);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3 数值型数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SalePrice       1.000000\n",
      "OverallQual     0.790982\n",
      "GrLivArea       0.708624\n",
      "GarageCars      0.640409\n",
      "GarageArea      0.623431\n",
      "TotalBsmtSF     0.613581\n",
      "1stFlrSF        0.605852\n",
      "FullBath        0.560664\n",
      "TotRmsAbvGrd    0.533723\n",
      "YearBuilt       0.522897\n",
      "YearRemodAdd    0.507101\n",
      "Name: SalePrice, dtype: float64\n",
      "\n",
      "\n",
      "PoolArea         0.092404\n",
      "MoSold           0.046432\n",
      "3SsnPorch        0.044584\n",
      "BsmtFinSF2      -0.011378\n",
      "BsmtHalfBath    -0.016844\n",
      "MiscVal         -0.021190\n",
      "Id              -0.021917\n",
      "LowQualFinSF    -0.025606\n",
      "YrSold          -0.028923\n",
      "OverallCond     -0.077856\n",
      "MSSubClass      -0.084284\n",
      "EnclosedPorch   -0.128578\n",
      "KitchenAbvGr    -0.135907\n",
      "Name: SalePrice, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "###取出数值型\n",
    "numeric_features = train_data.select_dtypes(include=[np.number]) \n",
    "# numeric_features.dtypes \n",
    "\n",
    "# 相关性\n",
    "corr = numeric_features.corr()\n",
    "# corr['SalePrice'].sort_values()\n",
    "\n",
    "print(corr['SalePrice'].sort_values(ascending=False)[:11]) \n",
    "print(\"\\n\")\n",
    "print(corr['SalePrice'].sort_values(ascending=False)[-13:]) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "前11个OverallQual、GrLivArea、GarageCars、GarageArea等与SalePrice强正相关，\n",
    "\n",
    "后13个YrSold、OverallCond、MSSubClass、EnclosedPorch、KitchenAbvGr等与SalePrice弱相关，直接删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1460, 68)\n",
      "(1459, 67)\n"
     ]
    }
   ],
   "source": [
    "# 删除无关联的属性\n",
    "train_data = train_data.drop(['KitchenAbvGr', 'EnclosedPorch', 'MSSubClass', 'OverallCond', \n",
    "                              'YrSold', 'LowQualFinSF', 'Id', 'MiscVal', 'BsmtHalfBath', \n",
    "                              'BsmtFinSF2', '3SsnPorch', 'MoSold', 'PoolArea'], axis=1)\n",
    "\n",
    "test_data = test_data.drop(['KitchenAbvGr', 'EnclosedPorch', 'MSSubClass', 'OverallCond', \n",
    "                            'YrSold', 'LowQualFinSF', 'Id', 'MiscVal', 'BsmtHalfBath', \n",
    "                            'BsmtFinSF2', '3SsnPorch', 'MoSold', 'PoolArea'], axis=1)\n",
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1 SalePrice && OverallQual(整体材质和完成品质)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 7,  6,  8,  5,  9,  4, 10,  3,  1,  2])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data['OverallQual'].unique() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OverallQual</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>86250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>108000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>133000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>160000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>200141</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>269750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>345000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>432390</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             SalePrice\n",
       "OverallQual           \n",
       "1                50150\n",
       "2                60000\n",
       "3                86250\n",
       "4               108000\n",
       "5               133000\n",
       "6               160000\n",
       "7               200141\n",
       "8               269750\n",
       "9               345000\n",
       "10              432390"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')\n",
    "qverall_qual = train_data.pivot_table(index='OverallQual', values='SalePrice', aggfunc=np.median)\n",
    "qverall_qual"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "qverall_qual.plot(kind='bar', color='blue')  \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出随着OverallQual(整体材质和完成品质)的提升，销售价格的中位数也在快速提高"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 SalePrice && GrLivArea(地上居住面积)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "target = np.log(train_data.SalePrice) \n",
    "plt.scatter(x=train_data['GrLivArea'], y=target) \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出GrLivArea增加，相应的销售价也会上涨\n",
    "\n",
    "这里可以看到有两个面积很大的房子，售价很低，这里删除这两个数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data = train_data[-((target < 12.5) &  (train_data['GrLivArea'] > 4000))]\n",
    "target = np.log(train_data.SalePrice) \n",
    "plt.scatter(x=train_data['GrLivArea'], y=target) \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 SalePrice && GarageArea(车库大小)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# GarageCars与GarageArea 应该是强相关的，我们只考虑GarageArea就可以了\n",
    "plt.scatter(x=train_data['GarageArea'], y=target) \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们注意到GarageArea有很多为0的情况，说明他们没有车库。有少数GarageArea比较大的情况，我们把它去除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data = train_data[train_data['GarageArea'] < 1200] \n",
    "\n",
    "target = np.log(train_data.SalePrice) \n",
    "plt.scatter(x=train_data['GarageArea'], y=target) \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.4 数值型空值处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Null Count</th>\n",
       "      <th>Percent</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>PoolQC</th>\n",
       "      <td>1448</td>\n",
       "      <td>0.995873</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MiscFeature</th>\n",
       "      <td>1401</td>\n",
       "      <td>0.963549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Alley</th>\n",
       "      <td>1363</td>\n",
       "      <td>0.937414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fence</th>\n",
       "      <td>1173</td>\n",
       "      <td>0.806740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FireplaceQu</th>\n",
       "      <td>689</td>\n",
       "      <td>0.473865</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotFrontage</th>\n",
       "      <td>258</td>\n",
       "      <td>0.177442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageFinish</th>\n",
       "      <td>81</td>\n",
       "      <td>0.055708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageType</th>\n",
       "      <td>81</td>\n",
       "      <td>0.055708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageCond</th>\n",
       "      <td>81</td>\n",
       "      <td>0.055708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageQual</th>\n",
       "      <td>81</td>\n",
       "      <td>0.055708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageYrBlt</th>\n",
       "      <td>81</td>\n",
       "      <td>0.055708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinType2</th>\n",
       "      <td>38</td>\n",
       "      <td>0.026135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtExposure</th>\n",
       "      <td>38</td>\n",
       "      <td>0.026135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtQual</th>\n",
       "      <td>37</td>\n",
       "      <td>0.025447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinType1</th>\n",
       "      <td>37</td>\n",
       "      <td>0.025447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtCond</th>\n",
       "      <td>37</td>\n",
       "      <td>0.025447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MasVnrArea</th>\n",
       "      <td>8</td>\n",
       "      <td>0.005502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MasVnrType</th>\n",
       "      <td>8</td>\n",
       "      <td>0.005502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Electrical</th>\n",
       "      <td>1</td>\n",
       "      <td>0.000688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>YearBuilt</th>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Null Count   Percent\n",
       "PoolQC              1448  0.995873\n",
       "MiscFeature         1401  0.963549\n",
       "Alley               1363  0.937414\n",
       "Fence               1173  0.806740\n",
       "FireplaceQu          689  0.473865\n",
       "LotFrontage          258  0.177442\n",
       "GarageFinish          81  0.055708\n",
       "GarageType            81  0.055708\n",
       "GarageCond            81  0.055708\n",
       "GarageQual            81  0.055708\n",
       "GarageYrBlt           81  0.055708\n",
       "BsmtFinType2          38  0.026135\n",
       "BsmtExposure          38  0.026135\n",
       "BsmtQual              37  0.025447\n",
       "BsmtFinType1          37  0.025447\n",
       "BsmtCond              37  0.025447\n",
       "MasVnrArea             8  0.005502\n",
       "MasVnrType             8  0.005502\n",
       "Electrical             1  0.000688\n",
       "YearBuilt              0  0.000000"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total = train_data.isnull().sum().sort_values(ascending=False)\n",
    "percent = (train_data.isnull().sum()/train_data.isnull().count()).sort_values(ascending=False)\n",
    "nulls = pd.concat([total, percent], axis=1, keys=['Null Count', 'Percent'])\n",
    "nulls.head(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们看到PoolQC(游泳池质量)为NaN的个数有1449，说明该屋没有游泳池，或者PoolArea(游泳池面积)为0.\n",
    "\n",
    "对于占比例太大的变量，比如超过了20%，就看看它的含义，如果不是很重要，这种数据是可以删掉的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1454, 63)\n",
      "(1459, 62)\n"
     ]
    }
   ],
   "source": [
    "# 删除过多空值的属性\n",
    "train_data = train_data.drop(['PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu'], axis=1)\n",
    "test_data = test_data.drop(['PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu'], axis=1)\n",
    "# train_data.columns\n",
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4 非数值型数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "not_numeric_data = train_data.select_dtypes(exclude=[np.number]) \n",
    "# not_numeric_data.describe\n",
    "# not_numeric_data.info()\n",
    "# not_numeric_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里我们用one-hot编码来对这些信息进行建模"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 SaleCondition(销售条件)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEqCAYAAADpvgyHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XuYHVWd7vHvSxIuEkIgCTwZEiYoASUGubTcdJggQ7iMCDjhACoE5JwEBRRRn0E9x3CRR5RRzoMigoIEELlEuQ5IONyVIOmGkMtEJj2I0sBIQrgkQkISfuePWg07nZ3u1d27u7p3v5/n6WfvvWpV1aqG7Ldr1apVigjMzMxybFJ2A8zMrP9waJiZWTaHhpmZZXNomJlZNoeGmZllc2iYmVk2h4aZmWVzaJiZWTaHhpmZZRtcdgNqbeTIkTFu3Liym2Fm1q80NTUti4hRHdWru9AYN24cjY2NZTfDzKxfkfTnnHoddk9JGivpQUmLJS2S9OVUfq6kFyTNSz9HVKzzDUnNkp6RdGhF+WGprFnSORXlO0n6g6Qlkm6StGkq3yx9bk7Lx+X/CszMrNZyrmmsBb4aER8C9gNOl7RbWnZJROyRfu4GSMuOByYAhwE/kTRI0iDgMuBwYDfghIrtfC9tazzwKnBqKj8VeDUidgYuSfXMzKwkHYZGRLwUEU+m9yuAxcAO7axyFHBjRKyOiD8BzcA+6ac5Ip6NiLeBG4GjJAn4BDArrT8TOLpiWzPT+1nAwam+mZmVoFPXNFL30J7AH4CPAWdIOglopDgbeZUiUB6vWK2F90Lm+Tbl+wIjgNciYm2V+ju0rhMRayW9nuov60y716xZQ0tLC6tWrerMalZh8803Z8yYMQwZMqTspphZibJDQ9JQ4NfAWRHxhqTLgQuASK8/AD4PVDsTCKqf1UQ79elgWWXbpgHTAHbccccNVmhpaWGrrbZi3Lhx+ESl8yKCV155hZaWFnbaaaeym2NmJcq6T0PSEIrA+GVE/AYgIv4aEesi4h3gZxTdT1CcKYytWH0M8GI75cuA4ZIGtylfb1tp+dbA8rbti4grI6IhIhpGjdpwxNiqVasYMWKEA6OLJDFixAifqZlZ1ugpAVcBiyPihxXloyuqHQMsTO/vAI5PI592AsYDTwBzgfFppNSmFBfL74ji0YEPAlPS+lOB2yu2NTW9nwI8EF181KADo3v8+zMzyOue+hhwIrBA0rxU9k2K0U97UHQXPQdMB4iIRZJuBv6DYuTV6RGxDkDSGcC9wCDg6ohYlLb3r8CNkr4DPEURUqTX6yQ1U5xhHN+NYzUzs27qMDQi4ndUv7ZwdzvrXAhcWKX87mrrRcSzvNe9VVm+Cji2ozZ2Vq3/aM4997nwwgu54YYbGDRoEJtssglXXHEF++67b9W6J598Mp/85CeZMmVK1eWtdR5++GG23nprNtlkEy677DL233//Der99Kc/5X3vex8nnXRSXkPNzDai7u4I76vmzJnDXXfdxZNPPslmm23GsmXLePvtt7u93YsvvpgpU6Ywe/Zspk+fzvz589dbvnbtWk477bRu78fMuqa3e3a71oGfz6HRS1566SVGjhzJZpttBsDIkSMBOP/887nzzjt56623OOCAA7jiiis2uH7Q1NTE2WefzcqVKxk5ciTXXHMNo0ePXq/OgQceSHNzMwCTJk3igAMO4Pe//z2f+tSnWLFiBUOHDuVrX/sazc3NnHbaaSxdupRBgwZxyy238IEPfICLL76Ym2++mdWrV3PMMcdw3nnn9cJvxcz6G89y20smT57M888/zy677MIXv/hFHn74YQDOOOMM5s6dy8KFC3nrrbe466671ltvzZo1nHnmmcyaNYumpiY+//nP861vfWuD7d95551MnDjx3c+vvfYaDz/8MF/96lfXq/fZz36W008/naeffprHHnuM0aNHM3v2bJYsWcITTzzBvHnzaGpq4pFHHumB34KZ9Xc+0+glQ4cOpampiUcffZQHH3yQ4447josuuoitttqK73//+7z55pssX76cCRMmcOSRR7673jPPPMPChQs55JBDAFi3bt16Zxlf//rX+c53vsOoUaO46qqr3i0/7rjjNmjDihUreOGFFzjmmGOA4oY9gNmzZzN79mz23HNPAFauXMmSJUs48MADa/+LMLN+zaHRiwYNGsSkSZOYNGkSEydO5IorrmD+/Pk0NjYyduxYzj333A3uhYgIJkyYwJw5c6pus/WaRltbbrnlBmUbG60cEXzjG99g+vTpXTgqMxtI3D3VS5555hmWLFny7ud58+ax6667AsX1jZUrVzJr1qwN1tt1111ZunTpu6GxZs0aFi1atEG9HMOGDWPMmDHcdtttAKxevZo333yT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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "condition_pivot = train_data.pivot_table(index='SaleCondition', values='SalePrice', aggfunc=np.median) \n",
    "condition_pivot.plot(kind='bar', color='blue') \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们看到Patrial的销售价远高于其他条件的价格，这里我们把Patrial销售的房屋制定为1，其他为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def encode(x): \n",
    "    return 1 if x == 'Partial' else 0 \n",
    "\n",
    "train_data['enc_condition'] = train_data['SaleCondition'].apply(encode)\n",
    "test_data['enc_condition'] = test_data['SaleCondition'].apply(encode)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "enc_condition = train_data.pivot_table(index='enc_condition', values='SalePrice', aggfunc=np.median) \n",
    "enc_condition.plot(kind='bar', color='blue') \n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = train_data.drop(['SaleCondition'], axis=1)\n",
    "test_data = test_data.drop(['SaleCondition'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 检查每个特征分布情况，后面的其他特征就不做处理了\n",
    "# print(train_data.Utilities.value_counts()) \n",
    "# temp = train_data.pivot_table(index='Utilities', values='SalePrice', aggfunc=np.median) \n",
    "# temp.plot(kind='bar', color='blue') \n",
    "# plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2 非数值型处理空值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1454, 63)\n",
      "(1459, 62)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:4: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n",
      "of pandas will change to not sort by default.\n",
      "\n",
      "To accept the future behavior, pass 'sort=True'.\n",
      "\n",
      "To retain the current behavior and silence the warning, pass sort=False\n",
      "\n",
      "  after removing the cwd from sys.path.\n"
     ]
    }
   ],
   "source": [
    "### 空值数\n",
    "\n",
    "#汇总train和test的数据\n",
    "all_data = pd.concat((train_data, test_data))\n",
    "\n",
    "not_numeric_data2 = train_data.select_dtypes(exclude=[np.number]) \n",
    "\n",
    "# value_counts表示数据出现的频率, idxmax:返回数组中最大值的索引值\n",
    "for col in not_numeric_data2.columns:\n",
    "    if train_data[col].isnull().sum() > 0:\n",
    "        val = all_data[col].dropna().value_counts().idxmax()\n",
    "        train_data[col] = train_data[col].fillna(val)\n",
    "        \n",
    "for col in not_numeric_data2.columns:\n",
    "    if test_data[col].isnull().sum() > 0:\n",
    "        val = all_data[col].dropna().value_counts().idxmax()\n",
    "        test_data[col] = test_data[col].fillna(val)\n",
    "        \n",
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1454, 252)\n",
      "(1459, 237)\n"
     ]
    }
   ],
   "source": [
    "#转成数值\n",
    "train_data2 = train_data\n",
    "test_data2 = test_data\n",
    "not_numeric_columns1 = train_data.select_dtypes(exclude=[np.number]) \n",
    "train_data2 = pd.get_dummies(train_data2, columns=not_numeric_columns1.columns)\n",
    "test_data2 = pd.get_dummies(test_data2, columns=not_numeric_columns1.columns)\n",
    "print(train_data2.shape)\n",
    "print(test_data2.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 注意：这里我们看到test数据里面属性的取值范围可能跟train数据里面属性的取值范围部分不同"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n",
      "of pandas will change to not sort by default.\n",
      "\n",
      "To accept the future behavior, pass 'sort=True'.\n",
      "\n",
      "To retain the current behavior and silence the warning, pass sort=False\n",
      "\n",
      "  \n",
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:5: FutureWarning: specifying 'categories' or 'ordered' in .astype() is deprecated; pass a CategoricalDtype instead\n",
      "  \"\"\"\n",
      "/Users/admin/Documents/Anaconda5.2/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:6: FutureWarning: specifying 'categories' or 'ordered' in .astype() is deprecated; pass a CategoricalDtype instead\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1454, 253)\n",
      "(1459, 252)\n"
     ]
    }
   ],
   "source": [
    "#综合处理，转值类型\n",
    "all_data = pd.concat((train_data, test_data))\n",
    "\n",
    "for col in all_data.select_dtypes(include = [object]).columns:\n",
    "    train_data[col] = train_data[col].astype('category', categories = all_data[col].dropna().unique())\n",
    "    test_data[col] = test_data[col].astype('category', categories = all_data[col].dropna().unique())\n",
    "\n",
    "\n",
    "for col in train_data.columns:\n",
    "    if train_data[col].dtype.name == 'category':\n",
    "        tmp = pd.get_dummies(train_data[col], prefix = col)\n",
    "        train_data = train_data.join(tmp)\n",
    "        train_data = train_data.drop(col, axis=1)\n",
    "\n",
    "for col in test_data.columns:\n",
    "    if test_data[col].dtype.name == 'category':\n",
    "        tmp = pd.get_dummies(test_data[col], prefix = col)\n",
    "        test_data = test_data.join(tmp)\n",
    "        test_data = test_data.drop(col, axis=1)\n",
    "\n",
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3 数值型插值法填补缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1454, 253)\n",
      "(1459, 252)\n"
     ]
    }
   ],
   "source": [
    "train_data = train_data.select_dtypes(include=[np.number]).interpolate().dropna() \n",
    "test_data = test_data.select_dtypes(include=[np.number]).interpolate().dropna() \n",
    "# train_data.head()\n",
    "print(train_data.shape)\n",
    "print(test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5 训练数据、测试数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "ytrain = np.log(train_data['SalePrice'])\n",
    "Xtrain = train_data.drop(['SalePrice'], axis=1)\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(Xtrain, ytrain, test_size=.25)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.1 线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.856628893447792\n",
      "0.9494865956106837\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import r2_score\n",
    "\n",
    "lr = LinearRegression()\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "print(r2_score(y_test, y_test_pred_lr))\n",
    "print(r2_score(y_train, y_train_pred_lr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE is: /n 0.020961630249175783\n"
     ]
    }
   ],
   "source": [
    "# 均方误差\n",
    "from sklearn.metrics import mean_squared_error \n",
    "print ('RMSE is: /n', mean_squared_error(y_test, y_test_pred_lr)) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>RoofStyle_Shed</td>\n",
       "      <td>0.470411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>RoofMatl_Membran</td>\n",
       "      <td>0.401850</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>Condition2_PosA</td>\n",
       "      <td>0.214081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>MSZoning_FV</td>\n",
       "      <td>0.206219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>BsmtCond_Po</td>\n",
       "      <td>0.204618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>MSZoning_RH</td>\n",
       "      <td>0.195282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>MSZoning_RL</td>\n",
       "      <td>0.166850</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>214</th>\n",
       "      <td>Functional_Typ</td>\n",
       "      <td>0.165509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>Condition2_RRNn</td>\n",
       "      <td>0.140485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>Neighborhood_Crawfor</td>\n",
       "      <td>0.136682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>Condition2_Norm</td>\n",
       "      <td>0.133251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>208</th>\n",
       "      <td>Electrical_FuseP</td>\n",
       "      <td>0.130694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>MSZoning_RM</td>\n",
       "      <td>0.129748</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>217</th>\n",
       "      <td>Functional_Min2</td>\n",
       "      <td>0.127120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>161</th>\n",
       "      <td>ExterCond_Ex</td>\n",
       "      <td>0.123785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>193</th>\n",
       "      <td>Heating_GasW</td>\n",
       "      <td>0.122342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>Neighborhood_StoneBr</td>\n",
       "      <td>0.110946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>127</th>\n",
       "      <td>Exterior1st_Stucco</td>\n",
       "      <td>0.103337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>232</th>\n",
       "      <td>GarageQual_Gd</td>\n",
       "      <td>0.101282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>LandSlope_Gtl</td>\n",
       "      <td>0.100847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>215</th>\n",
       "      <td>Functional_Min1</td>\n",
       "      <td>0.097896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>Utilities_AllPub</td>\n",
       "      <td>0.095067</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89</th>\n",
       "      <td>Condition2_RRAn</td>\n",
       "      <td>0.092830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>216</th>\n",
       "      <td>Functional_Maj1</td>\n",
       "      <td>0.084725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>LandSlope_Mod</td>\n",
       "      <td>0.082568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>122</th>\n",
       "      <td>Exterior1st_BrkFace</td>\n",
       "      <td>0.080702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>Neighborhood_NridgHt</td>\n",
       "      <td>0.080242</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>Foundation_Stone</td>\n",
       "      <td>0.078284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>Heating_Wall</td>\n",
       "      <td>0.076736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>126</th>\n",
       "      <td>Exterior1st_AsbShng</td>\n",
       "      <td>0.071092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>231</th>\n",
       "      <td>GarageQual_Fa</td>\n",
       "      <td>-0.072922</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>111</th>\n",
       "      <td>RoofMatl_CompShg</td>\n",
       "      <td>-0.073118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>104</th>\n",
       "      <td>HouseStyle_2.5Fin</td>\n",
       "      <td>-0.073569</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>112</th>\n",
       "      <td>RoofMatl_WdShngl</td>\n",
       "      <td>-0.076729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>Condition1_RRAe</td>\n",
       "      <td>-0.077759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>Neighborhood_Blueste</td>\n",
       "      <td>-0.077905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>Exterior2nd_Stucco</td>\n",
       "      <td>-0.085772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>247</th>\n",
       "      <td>SaleType_ConLI</td>\n",
       "      <td>-0.092473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>Exterior2nd_Stone</td>\n",
       "      <td>-0.094518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>Utilities_NoSeWa</td>\n",
       "      <td>-0.095067</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>116</th>\n",
       "      <td>RoofMatl_Tar&amp;Grv</td>\n",
       "      <td>-0.101652</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202</th>\n",
       "      <td>HeatingQC_Po</td>\n",
       "      <td>-0.103175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>174</th>\n",
       "      <td>BsmtCond_Fa</td>\n",
       "      <td>-0.104233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>234</th>\n",
       "      <td>GarageQual_Po</td>\n",
       "      <td>-0.117629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>160</th>\n",
       "      <td>ExterCond_Po</td>\n",
       "      <td>-0.118458</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>RoofStyle_Hip</td>\n",
       "      <td>-0.120064</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>107</th>\n",
       "      <td>RoofStyle_Gambrel</td>\n",
       "      <td>-0.125905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>105</th>\n",
       "      <td>RoofStyle_Gable</td>\n",
       "      <td>-0.132008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>Foundation_Wood</td>\n",
       "      <td>-0.132628</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>Heating_Floor</td>\n",
       "      <td>-0.140195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>114</th>\n",
       "      <td>RoofMatl_WdShake</td>\n",
       "      <td>-0.150350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>Neighborhood_MeadowV</td>\n",
       "      <td>-0.162930</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>219</th>\n",
       "      <td>Functional_Maj2</td>\n",
       "      <td>-0.177011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>LandSlope_Sev</td>\n",
       "      <td>-0.183415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>226</th>\n",
       "      <td>GarageType_2Types</td>\n",
       "      <td>-0.198042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>220</th>\n",
       "      <td>Functional_Sev</td>\n",
       "      <td>-0.294575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>209</th>\n",
       "      <td>Electrical_Mix</td>\n",
       "      <td>-0.297556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>128</th>\n",
       "      <td>Exterior1st_BrkComm</td>\n",
       "      <td>-0.312239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>Condition2_RRAe</td>\n",
       "      <td>-0.580908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>MSZoning_C (all)</td>\n",
       "      <td>-0.698099</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  columns      coef\n",
       "110        RoofStyle_Shed  0.470411\n",
       "115      RoofMatl_Membran  0.401850\n",
       "88        Condition2_PosA  0.214081\n",
       "28            MSZoning_FV  0.206219\n",
       "175           BsmtCond_Po  0.204618\n",
       "29            MSZoning_RH  0.195282\n",
       "25            MSZoning_RL  0.166850\n",
       "214        Functional_Typ  0.165509\n",
       "86        Condition2_RRNn  0.140485\n",
       "52   Neighborhood_Crawfor  0.136682\n",
       "84        Condition2_Norm  0.133251\n",
       "208      Electrical_FuseP  0.130694\n",
       "26            MSZoning_RM  0.129748\n",
       "217       Functional_Min2  0.127120\n",
       "161          ExterCond_Ex  0.123785\n",
       "193          Heating_GasW  0.122342\n",
       "68   Neighborhood_StoneBr  0.110946\n",
       "127    Exterior1st_Stucco  0.103337\n",
       "232         GarageQual_Gd  0.101282\n",
       "47          LandSlope_Gtl  0.100847\n",
       "215       Functional_Min1  0.097896\n",
       "40       Utilities_AllPub  0.095067\n",
       "89        Condition2_RRAn  0.092830\n",
       "216       Functional_Maj1  0.084725\n",
       "48          LandSlope_Mod  0.082568\n",
       "122   Exterior1st_BrkFace  0.080702\n",
       "60   Neighborhood_NridgHt  0.080242\n",
       "167      Foundation_Stone  0.078284\n",
       "195          Heating_Wall  0.076736\n",
       "126   Exterior1st_AsbShng  0.071092\n",
       "..                    ...       ...\n",
       "231         GarageQual_Fa -0.072922\n",
       "111      RoofMatl_CompShg -0.073118\n",
       "104     HouseStyle_2.5Fin -0.073569\n",
       "112      RoofMatl_WdShngl -0.076729\n",
       "79        Condition1_RRAe -0.077759\n",
       "74   Neighborhood_Blueste -0.077905\n",
       "141    Exterior2nd_Stucco -0.085772\n",
       "247        SaleType_ConLI -0.092473\n",
       "146     Exterior2nd_Stone -0.094518\n",
       "41       Utilities_NoSeWa -0.095067\n",
       "116      RoofMatl_Tar&Grv -0.101652\n",
       "202          HeatingQC_Po -0.103175\n",
       "174           BsmtCond_Fa -0.104233\n",
       "234         GarageQual_Po -0.117629\n",
       "160          ExterCond_Po -0.118458\n",
       "106         RoofStyle_Hip -0.120064\n",
       "107     RoofStyle_Gambrel -0.125905\n",
       "105       RoofStyle_Gable -0.132008\n",
       "165       Foundation_Wood -0.132628\n",
       "197         Heating_Floor -0.140195\n",
       "114      RoofMatl_WdShake -0.150350\n",
       "64   Neighborhood_MeadowV -0.162930\n",
       "219       Functional_Maj2 -0.177011\n",
       "49          LandSlope_Sev -0.183415\n",
       "226     GarageType_2Types -0.198042\n",
       "220        Functional_Sev -0.294575\n",
       "209        Electrical_Mix -0.297556\n",
       "128   Exterior1st_BrkComm -0.312239\n",
       "90        Condition2_RRAe -0.580908\n",
       "27       MSZoning_C (all) -0.698099\n",
       "\n",
       "[252 rows x 2 columns]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "colu = X_train.columns\n",
    "fs = pd.DataFrame({\"columns\": list(colu), \"coef\": list((lr.coef_.T))})\n",
    "fs.sort_values(by=['coef'], ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAG0CAYAAADO5AZFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+YnWV95/H3FxISIUL4McGQUBMUVH4mOGBSyw+NCBYk7LW64PIjlAguoNuWRRHdLVOqWy1UKwtlmwoCQgXMqrC17kJTYior4ARTBAImBQMTYjKEAgZEkvDdP86TeJLMZM7MOTOT3Hm/rivXOed+7vM833NPyHy4n/s5T2QmkiRJpdhpuAuQJElqJcONJEkqiuFGkiQVxXAjSZKKYriRJElFMdxIkqSiGG6k7UREPBYRxw93HcMpIv5dRDwbEWsiYuoQHndNRBzQy7ZzI+JHLTrOLyLiA63Yl7QjM9xI24Cefqlt/kszMw/JzPl97GdSRGREjBikUofb1cAnM3NMZv50843VZ3+lCiPLI+IrEbFzswetjvdUs/uRNDQMN5Iatg2EprcCj/XR54jMHAMcB5wOnDfoVUnaphhupO1E/exORBwdEZ0R8XJErIyIr1TdFlSPL1azF9MjYqeI+K8RsSwiVkXELRGxR91+z6m2rY6I/7bZcToiYm5E3BoRLwPnVsf+cUS8GBErIuLaiNilbn8ZERdFxJKI+FVE/FlEvK16z8sRcWd9/80+Y4+1RsSoiFgD7Az8S0T8a1/jlZlLgfuBKXX73yMibqjqXh4RX9gwsxMRb4+IH0bESxHxfETcsdlnenv1fO+IuLv6LA8Bb6vrt8XMWUTMj4iPV8/fFhH/VI318xFxW0SM7WUsevsZS+qD4UbaPn0N+Fpm7k7tl+udVfux1ePY6lTKj4Fzqz/vAw4AxgDXAkTEwcBfA2cC44E9gAmbHWsmMBcYC9wGrAf+GNgHmA7MAC7a7D0nAe8GpgGfAeZUx9gfOBT4WC+fq8daM/M31WwM1GZm3tbz238rIt4JHAMsrWu+GVgHvB2YCnwQ+Hi17c+Ae4A9gYnA/+hl19cBr1Ebr/Po38xQAH8O7Ae8i9p4dPTSt7efsaQ+GG6kbcf3qtmQFyPiRWqhozdrgbdHxD6ZuSYzH9hK3zOBr2TmU5m5BrgcOKOaXfgI8L8z80eZ+TrwJ8DmN5z7cWZ+LzPfyMxfZ+bCzHwgM9dl5i+Av6F2CqjelzPz5cx8DHgUuKc6/kvAD6gFi/7W2qiHI+IVYDEwn2ocI2Jf4EPAH2XmK5m5CvgqcEb1vrXUTnvtl5mvZeYWi4SrWZ5/D/xJtY9HqQWmhmTm0sy8twpr3cBX2HLsNujPz1hSHcONtO04LTPHbvjDlrMh9WYDBwFPRMRPIuKUrfTdD1hW93oZMALYt9r27IYNmfkqsHqz9z9b/yIiDoqIv4+IX1anqv47tVmceivrnv+6h9dj6NnWam3UkdX+TwfeA+xWtb8VGAmsqAuQfwOMq7Z/htrMykNRuzKtpxmZtqqe+jFZ1kO/HkXEuIi4vTol9jJwK1uO3Qb9+RlLqmO4kbZDmbkkMz9G7Rfzl4G5EbEbW866ADxH7Rf7Br9D7dTMSmAFtVMwAETEm4C9Nz/cZq+vB54ADqxOmXyOWihoha3V2rCsuRP4MbXZKKgFkt8A+9SFyN0z85DqPb/MzPMzcz/gE8Bfb1hnU6e7qmf/zWrc4JXqcde6trfUPf9zauN5eDV2Z9HL2G3lZyypD4YbaTsUEWdFRFtmvgG8WDWvp/bL9w1q61U2+BbwxxExOSLGUJtpuSMz11FbS/PhiPjdapHvn9J3UHkz8DKwplrXcmHLPtjWax2ILwEXRMRbMnMFtTU1fxkRu1eLl98WEccBRMRHI2JD0Ps3aiFkff3OMnM98B2gIyJ2rdYszarb3g0sB86KiJ2r2Z/69UFvBtZQW/A9Afh0b4Vv5WcsqQ+GG2n7dBLwWHUF0deAM6p1Iq8CXwTur069TANuBL5J7Uqqp6kthv0UQLUm5lPA7dRmcX4FrKI2w9GbS4H/WPX9W+COrfTtr15rHYjM/BnwQ34bIs4BdgEepxZg5lJbGAxwFPBgNaZ3A3+YmU/3sNtPUjvt9UvgJuAbm20/vzreauAQ4P/VbftTaqfNXgK+Ty0o9abHn/HWP7EkgMjsaRZb0o6omi15kdopp55+sUvSNs+ZG2kHFxEfrk6x7EbtG4B/BvxieKuSpIEz3EiaSW0h73PAgdROfzilK2m75WkpSZJUFGduJElSUYb7JngA7LPPPjlp0qThLkOSJG3DFi5c+HxmtvXVb5sIN5MmTaKzs3O4y5AkSduwiGjoG8E9LSVJkopiuJEkSUUx3EiSpKJsE2tuJEkaiLVr19LV1cVrr3lnipKMHj2aiRMnMnLkyAG933AjSdpudXV18eY3v5lJkyYR0aqb02s4ZSarV6+mq6uLyZMnD2gfnpaSJG23XnvtNfbee2+DTUEigr333rup2TjDjSRpu2awKU+zP1PDjSRJKoprbiRJxejoGPr97bzzzhx22GGsW7eOyZMn881vfpOxY8f2+1gf//jHueSSSzj44IM3ab/pppvo7Ozk2muv7fc+AcaMGcOaNWsa6nv88cdz9dVX097evrGts7OTW265hWuuuWZAxx8OztxIktSEN73pTSxatIhHH32Uvfbai+uuu25A+/n617++RbDZFrS3tw96sFm/fn1L92e4kSSpRaZPn87y5cs3vr7qqqs46qijOPzww7niiisAeOWVVzj55JM54ogjOPTQQ7njjjuA2qzJhlsRfeMb3+Cggw7iuOOO4/7779+4v3PPPZe5c+dufD1mzBgA1qxZw4wZMzjyyCM57LDDuOuuu7aobcWKFRx77LFMmTKFQw89lH/+539u6DPNnz+fU045BYCOjg7OO+88jj/+eA444IBNQs+tt97K0UcfzZQpU/jEJz6xMbBceOGFtLe3c8ghh2wcA6jdeunKK6/k937v9/j2t7/dUC2N8rSUJEktsH79eubNm8fs2bMBuOeee1iyZAkPPfQQmcmpp57KggUL6O7uZr/99uP73/8+AC+99NIm+1mxYgVXXHEFCxcuZI899uB973sfU6dO3eqxR48ezXe/+1123313nn/+eaZNm8app566ycLcv/u7v+PEE0/k85//POvXr+fVV18d0Od84oknuO+++/jVr37FO97xDi688EKWLl3KHXfcwf3338/IkSO56KKLuO222zjnnHP44he/yF577cX69euZMWMGjzzyCIcffvjGun/0ox8NqI6tMdxIktSEX//610yZMoVf/OIXvPvd7+aEE04AauHmnnvu2RhM1qxZw5IlSzjmmGO49NJLueyyyzjllFM45phjNtnfgw8+yPHHH09bW+3m16effjo///nPt1pDZvK5z32OBQsWsNNOO7F8+XJWrlzJW97ylo19jjrqKM477zzWrl3LaaedxpQpUwb0eU8++WRGjRrFqFGjGDduHCtXrmTevHksXLiQo446auOYjBs3DoA777yTOXPmsG7dOlasWMHjjz++MdycfvrpA6qhL56WkiSpCRvW3CxbtozXX39945qbzOTyyy9n0aJFLFq0iKVLlzJ79mwOOuggFi5cyGGHHcbll1/OlVdeucU+e7sUesSIEbzxxhsb9//6668DcNttt9Hd3c3ChQtZtGgR++677xbfE3PssceyYMECJkyYwNlnn80tt9wyoM87atSojc933nln1q1bR2Yya9asjZ/1ySefpKOjg6effpqrr76aefPm8cgjj3DyySdvUtduu+02oBr6YriRJKkF9thjD6655hquvvpq1q5dy4knnsiNN9648Uql5cuXs2rVKp577jl23XVXzjrrLC699FIefvjhTfbznve8h/nz57N69WrWrl27yXqUSZMmsXDhQgDuuusu1q5dC9RObY0bN46RI0dy3333sWzZsi3qW7ZsGePGjeP8889n9uzZWxy3GTNmzGDu3LmsWrUKgBdeeIFly5bx8ssvs9tuu7HHHnuwcuVKfvCDH7TsmFvjaSlJUjFafSl4f02dOpUjjjiC22+/nbPPPpvFixczffp0oLb499Zbb2Xp0qV8+tOfZqeddmLkyJFcf/31m+xj/PjxdHR0MH36dMaPH8+RRx65cXHu+eefz8yZMzn66KOZMWPGxpmPM888kw9/+MO0t7czZcoU3vnOd25R2/z587nqqqsYOXIkY8aM6XXm5uSTT954T6fp06dz8cUX9/m5Dz74YL7whS/wwQ9+kDfeeIORI0dy3XXXMW3aNKZOncohhxzCAQccwHvf+97GB7MJkZlDcqCtaW9vzw0rxCVJatTixYt517veNdxlaBD09LONiIWZ2d7LWzZy5kaSCtff2Yzhnv2QmuWaG0mSVBTDjSRpu7YtLK9QazX7MzXcSJK2W6NHj2b16tUGnIJkJqtXr2b06NED3odrbiRJ262JEyfS1dVFd3f3cJeiFho9ejQTJ04c8PsNN5Kk7dbIkSOZPHnycJehbYynpSRJUlGcuZEkbcJLx7W9c+ZGkiQVxXAjSZKKYriRJElFMdxIkqSi9BluIuLGiFgVEY9u1v6piHgyIh6LiL+oa788IpZW204cjKIlSZJ608jVUjcB1wIb740eEe8DZgKHZ+ZvImJc1X4wcAZwCLAf8I8RcVBmrm914ZIkST3pc+YmMxcAL2zWfCHwpcz8TdVnVdU+E7g9M3+TmU8DS4GjW1ivJEnSVg10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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, ax = plt.subplots(figsize=(8, 6))\n",
    "f.tight_layout()\n",
    "ax.hist(y_train - y_train_pred_lr, bins=40, label='Residuals Linear', color='b', alpha=.5); \n",
    "ax.set_title(\"Histogram of Residuals\") \n",
    "ax.legend(loc='best');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.2 正则化的线性回归（L2正则 --> 岭回归）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.856628893447792\n",
      "0.9494865956106837\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import RidgeCV\n",
    "\n",
    "alphas = [0.01, 0.1, 1, 10, 100, 1000]\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)\n",
    "ridge.fit(X_train, y_train)\n",
    "\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "print(r2_score(y_test, y_test_pred_lr))\n",
    "print(r2_score(y_train, y_train_pred_lr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE is: /n 0.016938504693965403\n"
     ]
    }
   ],
   "source": [
    "print ('RMSE is: /n', mean_squared_error(y_test, y_test_pred_ridge)) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "效果不如线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n"
     ]
    }
   ],
   "source": [
    "mse_mean = np.mean(ridge.cv_values_, axis=0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas), 1))\n",
    "plt.show()\n",
    "\n",
    "print(ridge.alpha_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>110</th>\n",
       "      <td>RoofStyle_Shed</td>\n",
       "      <td>0.470411</td>\n",
       "      <td>0.097608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>RoofMatl_Membran</td>\n",
       "      <td>0.401850</td>\n",
       "      <td>0.136784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>Condition2_PosA</td>\n",
       "      <td>0.214081</td>\n",
       "      <td>0.058688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>MSZoning_FV</td>\n",
       "      <td>0.206219</td>\n",
       "      <td>0.151480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>BsmtCond_Po</td>\n",
       "      <td>0.204618</td>\n",
       "      <td>0.022840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>MSZoning_RH</td>\n",
       "      <td>0.195282</td>\n",
       "      <td>0.133763</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>MSZoning_RL</td>\n",
       "      <td>0.166850</td>\n",
       "      <td>0.125500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>214</th>\n",
       "      <td>Functional_Typ</td>\n",
       "      <td>0.165509</td>\n",
       "      <td>0.131269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>Condition2_RRNn</td>\n",
       "      <td>0.140485</td>\n",
       "      <td>0.043183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>Neighborhood_Crawfor</td>\n",
       "      <td>0.136682</td>\n",
       "      <td>0.123920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>Condition2_Norm</td>\n",
       "      <td>0.133251</td>\n",
       "      <td>0.052193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>208</th>\n",
       "      <td>Electrical_FuseP</td>\n",
       "      <td>0.130694</td>\n",
       "      <td>0.051283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>MSZoning_RM</td>\n",
       "      <td>0.129748</td>\n",
       "      <td>0.100125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>217</th>\n",
       "      <td>Functional_Min2</td>\n",
       "      <td>0.127120</td>\n",
       "      <td>0.080481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>161</th>\n",
       "      <td>ExterCond_Ex</td>\n",
       "      <td>0.123785</td>\n",
       "      <td>0.094575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>193</th>\n",
       "      <td>Heating_GasW</td>\n",
       "      <td>0.122342</td>\n",
       "      <td>0.080262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>Neighborhood_StoneBr</td>\n",
       "      <td>0.110946</td>\n",
       "      <td>0.101698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>127</th>\n",
       "      <td>Exterior1st_Stucco</td>\n",
       "      <td>0.103337</td>\n",
       "      <td>0.083124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>232</th>\n",
       "      <td>GarageQual_Gd</td>\n",
       "      <td>0.101282</td>\n",
       "      <td>0.068243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>LandSlope_Gtl</td>\n",
       "      <td>0.100847</td>\n",
       "      <td>0.054982</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>215</th>\n",
       "      <td>Functional_Min1</td>\n",
       "      <td>0.097896</td>\n",
       "      <td>0.062141</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>Utilities_AllPub</td>\n",
       "      <td>0.095067</td>\n",
       "      <td>0.048551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89</th>\n",
       "      <td>Condition2_RRAn</td>\n",
       "      <td>0.092830</td>\n",
       "      <td>0.009884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>216</th>\n",
       "      <td>Functional_Maj1</td>\n",
       "      <td>0.084725</td>\n",
       "      <td>0.045675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>LandSlope_Mod</td>\n",
       "      <td>0.082568</td>\n",
       "      <td>0.037898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>122</th>\n",
       "      <td>Exterior1st_BrkFace</td>\n",
       "      <td>0.080702</td>\n",
       "      <td>0.067742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>Neighborhood_NridgHt</td>\n",
       "      <td>0.080242</td>\n",
       "      <td>0.075158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>Foundation_Stone</td>\n",
       "      <td>0.078284</td>\n",
       "      <td>0.053797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>Heating_Wall</td>\n",
       "      <td>0.076736</td>\n",
       "      <td>0.033038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>126</th>\n",
       "      <td>Exterior1st_AsbShng</td>\n",
       "      <td>0.071092</td>\n",
       "      <td>0.033771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>231</th>\n",
       "      <td>GarageQual_Fa</td>\n",
       "      <td>-0.072922</td>\n",
       "      <td>-0.060092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>111</th>\n",
       "      <td>RoofMatl_CompShg</td>\n",
       "      <td>-0.073118</td>\n",
       "      <td>-0.020279</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>104</th>\n",
       "      <td>HouseStyle_2.5Fin</td>\n",
       "      <td>-0.073569</td>\n",
       "      <td>-0.042770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>112</th>\n",
       "      <td>RoofMatl_WdShngl</td>\n",
       "      <td>-0.076729</td>\n",
       "      <td>-0.022894</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>Condition1_RRAe</td>\n",
       "      <td>-0.077759</td>\n",
       "      <td>-0.071317</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>Neighborhood_Blueste</td>\n",
       "      <td>-0.077905</td>\n",
       "      <td>-0.041079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>Exterior2nd_Stucco</td>\n",
       "      <td>-0.085772</td>\n",
       "      <td>-0.056281</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>247</th>\n",
       "      <td>SaleType_ConLI</td>\n",
       "      <td>-0.092473</td>\n",
       "      <td>-0.064567</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>Exterior2nd_Stone</td>\n",
       "      <td>-0.094518</td>\n",
       "      <td>-0.058123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>Utilities_NoSeWa</td>\n",
       "      <td>-0.095067</td>\n",
       "      <td>-0.048551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>116</th>\n",
       "      <td>RoofMatl_Tar&amp;Grv</td>\n",
       "      <td>-0.101652</td>\n",
       "      <td>-0.079778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202</th>\n",
       "      <td>HeatingQC_Po</td>\n",
       "      <td>-0.103175</td>\n",
       "      <td>-0.035418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>174</th>\n",
       "      <td>BsmtCond_Fa</td>\n",
       "      <td>-0.104233</td>\n",
       "      <td>-0.045241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>234</th>\n",
       "      <td>GarageQual_Po</td>\n",
       "      <td>-0.117629</td>\n",
       "      <td>-0.062593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>160</th>\n",
       "      <td>ExterCond_Po</td>\n",
       "      <td>-0.118458</td>\n",
       "      <td>-0.053907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>RoofStyle_Hip</td>\n",
       "      <td>-0.120064</td>\n",
       "      <td>-0.035270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>107</th>\n",
       "      <td>RoofStyle_Gambrel</td>\n",
       "      <td>-0.125905</td>\n",
       "      <td>-0.044179</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>105</th>\n",
       "      <td>RoofStyle_Gable</td>\n",
       "      <td>-0.132008</td>\n",
       "      <td>-0.047460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>Foundation_Wood</td>\n",
       "      <td>-0.132628</td>\n",
       "      <td>-0.089716</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>Heating_Floor</td>\n",
       "      <td>-0.140195</td>\n",
       "      <td>-0.056882</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>114</th>\n",
       "      <td>RoofMatl_WdShake</td>\n",
       "      <td>-0.150350</td>\n",
       "      <td>-0.013834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>Neighborhood_MeadowV</td>\n",
       "      <td>-0.162930</td>\n",
       "      <td>-0.151842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>219</th>\n",
       "      <td>Functional_Maj2</td>\n",
       "      <td>-0.177011</td>\n",
       "      <td>-0.174437</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>LandSlope_Sev</td>\n",
       "      <td>-0.183415</td>\n",
       "      <td>-0.092880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>226</th>\n",
       "      <td>GarageType_2Types</td>\n",
       "      <td>-0.198042</td>\n",
       "      <td>-0.126513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>220</th>\n",
       "      <td>Functional_Sev</td>\n",
       "      <td>-0.294575</td>\n",
       "      <td>-0.116248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>209</th>\n",
       "      <td>Electrical_Mix</td>\n",
       "      <td>-0.297556</td>\n",
       "      <td>-0.049046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>128</th>\n",
       "      <td>Exterior1st_BrkComm</td>\n",
       "      <td>-0.312239</td>\n",
       "      <td>-0.134123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>Condition2_RRAe</td>\n",
       "      <td>-0.580908</td>\n",
       "      <td>-0.089608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>MSZoning_C (all)</td>\n",
       "      <td>-0.698099</td>\n",
       "      <td>-0.510869</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  columns   coef_lr  coef_ridge\n",
       "110        RoofStyle_Shed  0.470411    0.097608\n",
       "115      RoofMatl_Membran  0.401850    0.136784\n",
       "88        Condition2_PosA  0.214081    0.058688\n",
       "28            MSZoning_FV  0.206219    0.151480\n",
       "175           BsmtCond_Po  0.204618    0.022840\n",
       "29            MSZoning_RH  0.195282    0.133763\n",
       "25            MSZoning_RL  0.166850    0.125500\n",
       "214        Functional_Typ  0.165509    0.131269\n",
       "86        Condition2_RRNn  0.140485    0.043183\n",
       "52   Neighborhood_Crawfor  0.136682    0.123920\n",
       "84        Condition2_Norm  0.133251    0.052193\n",
       "208      Electrical_FuseP  0.130694    0.051283\n",
       "26            MSZoning_RM  0.129748    0.100125\n",
       "217       Functional_Min2  0.127120    0.080481\n",
       "161          ExterCond_Ex  0.123785    0.094575\n",
       "193          Heating_GasW  0.122342    0.080262\n",
       "68   Neighborhood_StoneBr  0.110946    0.101698\n",
       "127    Exterior1st_Stucco  0.103337    0.083124\n",
       "232         GarageQual_Gd  0.101282    0.068243\n",
       "47          LandSlope_Gtl  0.100847    0.054982\n",
       "215       Functional_Min1  0.097896    0.062141\n",
       "40       Utilities_AllPub  0.095067    0.048551\n",
       "89        Condition2_RRAn  0.092830    0.009884\n",
       "216       Functional_Maj1  0.084725    0.045675\n",
       "48          LandSlope_Mod  0.082568    0.037898\n",
       "122   Exterior1st_BrkFace  0.080702    0.067742\n",
       "60   Neighborhood_NridgHt  0.080242    0.075158\n",
       "167      Foundation_Stone  0.078284    0.053797\n",
       "195          Heating_Wall  0.076736    0.033038\n",
       "126   Exterior1st_AsbShng  0.071092    0.033771\n",
       "..                    ...       ...         ...\n",
       "231         GarageQual_Fa -0.072922   -0.060092\n",
       "111      RoofMatl_CompShg -0.073118   -0.020279\n",
       "104     HouseStyle_2.5Fin -0.073569   -0.042770\n",
       "112      RoofMatl_WdShngl -0.076729   -0.022894\n",
       "79        Condition1_RRAe -0.077759   -0.071317\n",
       "74   Neighborhood_Blueste -0.077905   -0.041079\n",
       "141    Exterior2nd_Stucco -0.085772   -0.056281\n",
       "247        SaleType_ConLI -0.092473   -0.064567\n",
       "146     Exterior2nd_Stone -0.094518   -0.058123\n",
       "41       Utilities_NoSeWa -0.095067   -0.048551\n",
       "116      RoofMatl_Tar&Grv -0.101652   -0.079778\n",
       "202          HeatingQC_Po -0.103175   -0.035418\n",
       "174           BsmtCond_Fa -0.104233   -0.045241\n",
       "234         GarageQual_Po -0.117629   -0.062593\n",
       "160          ExterCond_Po -0.118458   -0.053907\n",
       "106         RoofStyle_Hip -0.120064   -0.035270\n",
       "107     RoofStyle_Gambrel -0.125905   -0.044179\n",
       "105       RoofStyle_Gable -0.132008   -0.047460\n",
       "165       Foundation_Wood -0.132628   -0.089716\n",
       "197         Heating_Floor -0.140195   -0.056882\n",
       "114      RoofMatl_WdShake -0.150350   -0.013834\n",
       "64   Neighborhood_MeadowV -0.162930   -0.151842\n",
       "219       Functional_Maj2 -0.177011   -0.174437\n",
       "49          LandSlope_Sev -0.183415   -0.092880\n",
       "226     GarageType_2Types -0.198042   -0.126513\n",
       "220        Functional_Sev -0.294575   -0.116248\n",
       "209        Electrical_Mix -0.297556   -0.049046\n",
       "128   Exterior1st_BrkComm -0.312239   -0.134123\n",
       "90        Condition2_RRAe -0.580908   -0.089608\n",
       "27       MSZoning_C (all) -0.698099   -0.510869\n",
       "\n",
       "[252 rows x 3 columns]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fs = pd.DataFrame({\"columns\": list(colu), \"coef_lr\": list((lr.coef_.T)), \"coef_ridge\": list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'], ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.3 正则化的线性回归（L1正则 --> Lasso）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.7931923559742329\n",
      "The r2 score of LassoCV on train is 0.835229764938507\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LassoCV\n",
    "lasso = LassoCV()  \n",
    "lasso.fit(X_train, y_train)  \n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "\n",
    "print('The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print('The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE is: /n 0.030236394703368745\n"
     ]
    }
   ],
   "source": [
    "print ('RMSE is: /n', mean_squared_error(y_test, y_test_pred_lasso)) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "效果不如线性回归和岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0222646218465055\n"
     ]
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis=1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses)\n",
    "plt.show()\n",
    "\n",
    "print(lasso.alpha_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 636,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fs = pd.DataFrame({\"columns\": list(colu), \"coef_lr\": list((lr.coef_.T)), \"coef_ridge\": list((lasso.coef_.T)), \"coef_lasso\": list((lasso.coef_.T))})\n",
    "# fs.sort_values(by=['coef_lr'], ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7 预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 639,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>117770.396379</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>156460.619457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>183097.786684</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>192060.729749</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>191651.513946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>171787.132309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>174085.057527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>162525.002450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>194032.766450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>122817.701775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>162412.061381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>99280.127896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>94565.167604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>143733.427038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>114940.053980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>371561.162340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>253990.958877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>300707.870647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>296611.231024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>551365.383358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>330546.273677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>204413.153883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>174123.315021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>168611.739953</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>182240.769571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>190608.511999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>356309.605933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>223037.218989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>196078.288678</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>226355.705018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1429</th>\n",
       "      <td>92300.553131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1430</th>\n",
       "      <td>147422.791958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1431</th>\n",
       "      <td>32265.091934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1432</th>\n",
       "      <td>54160.893781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1433</th>\n",
       "      <td>40083.508391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1434</th>\n",
       "      <td>365850.989457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1435</th>\n",
       "      <td>300251.951937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1436</th>\n",
       "      <td>200649.312380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1437</th>\n",
       "      <td>135580.366494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1438</th>\n",
       "      <td>195949.406468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1439</th>\n",
       "      <td>151353.048886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1440</th>\n",
       "      <td>204602.620433</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1441</th>\n",
       "      <td>157284.022995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1442</th>\n",
       "      <td>319481.104555</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1443</th>\n",
       "      <td>353785.346110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1444</th>\n",
       "      <td>78328.936378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1445</th>\n",
       "      <td>193741.513036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1446</th>\n",
       "      <td>105247.759479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1447</th>\n",
       "      <td>129509.037782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1448</th>\n",
       "      <td>139393.696654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1449</th>\n",
       "      <td>73768.928226</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1450</th>\n",
       "      <td>85826.427824</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1451</th>\n",
       "      <td>138380.790332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1452</th>\n",
       "      <td>91837.320088</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1453</th>\n",
       "      <td>78359.122235</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1454</th>\n",
       "      <td>80253.016606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1455</th>\n",
       "      <td>97263.609855</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1456</th>\n",
       "      <td>170789.675448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1457</th>\n",
       "      <td>119344.373391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1458</th>\n",
       "      <td>212475.873895</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1459 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          SalePrice\n",
       "0     117770.396379\n",
       "1     156460.619457\n",
       "2     183097.786684\n",
       "3     192060.729749\n",
       "4     191651.513946\n",
       "5     171787.132309\n",
       "6     174085.057527\n",
       "7     162525.002450\n",
       "8     194032.766450\n",
       "9     122817.701775\n",
       "10    162412.061381\n",
       "11     99280.127896\n",
       "12     94565.167604\n",
       "13    143733.427038\n",
       "14    114940.053980\n",
       "15    371561.162340\n",
       "16    253990.958877\n",
       "17    300707.870647\n",
       "18    296611.231024\n",
       "19    551365.383358\n",
       "20    330546.273677\n",
       "21    204413.153883\n",
       "22    174123.315021\n",
       "23    168611.739953\n",
       "24    182240.769571\n",
       "25    190608.511999\n",
       "26    356309.605933\n",
       "27    223037.218989\n",
       "28    196078.288678\n",
       "29    226355.705018\n",
       "...             ...\n",
       "1429   92300.553131\n",
       "1430  147422.791958\n",
       "1431   32265.091934\n",
       "1432   54160.893781\n",
       "1433   40083.508391\n",
       "1434  365850.989457\n",
       "1435  300251.951937\n",
       "1436  200649.312380\n",
       "1437  135580.366494\n",
       "1438  195949.406468\n",
       "1439  151353.048886\n",
       "1440  204602.620433\n",
       "1441  157284.022995\n",
       "1442  319481.104555\n",
       "1443  353785.346110\n",
       "1444   78328.936378\n",
       "1445  193741.513036\n",
       "1446  105247.759479\n",
       "1447  129509.037782\n",
       "1448  139393.696654\n",
       "1449   73768.928226\n",
       "1450   85826.427824\n",
       "1451  138380.790332\n",
       "1452   91837.320088\n",
       "1453   78359.122235\n",
       "1454   80253.016606\n",
       "1455   97263.609855\n",
       "1456  170789.675448\n",
       "1457  119344.373391\n",
       "1458  212475.873895\n",
       "\n",
       "[1459 rows x 1 columns]"
      ]
     },
     "execution_count": 639,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 这里我们采用线性回归模型进行预测\n",
    "test_predict_data = pd.read_csv(\"/Users/admin/Desktop/Ames_House/Ames_House_test.csv\") \n",
    "\n",
    "test_data_pred_lr = lr.predict(test_data)\n",
    "results['Id'] = test_predict_data.Id\n",
    "results = pd.DataFrame()\n",
    "results['SalePrice'] = np.exp(test_data_pred_lr)\n",
    "results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
